svn
集中式,有一个中央服务器,需要先从上面拉取最新的代码才能干活,干完活再推送上去,必须联网才能工作,对网络要求大
基本概念
repository
checkout
commit
update
更新代码
让我们假设 Tom 和 Jerry 是一个项目的两个开发者。他们同时从版本库中检出了最新的版本并开始工作。此时,工作副本是与版本库完全同步的。然后,Jerry 很高效的完成了他的工作并提交了更改到版本库中。 此时 Tom 的工作副本就过期了。更新操作将会从版本库中拉取 Jerry 的最新改动并将 Tom 的工作副本进行更新。
开发
git
工作区
版本库
仓库的 .git 文件夹就是版本库
暂存区
自动创建第一个master分支,以及指向master分支的指针HEAD
1、新建目录,右键鼠标进入 Git Bash Here
2、git init
3、目录下创建一个文件
4、git add 文件名(可写多个文件名)
5、git commit -m "注释"
6、git status
7、修改文件内容
8、git diff 文件名
9、git status
10、 git add 文件名
11、git commit -m "注释"
12、git status
13、提交远程仓库
注册GitHub账号
创建密钥与本地关联
创建仓库(名字最好与本地相同)
远程仓库与本地仓库关联
本地提交到远程仓库,与远程仓库同步
git push -u origin master
开发
注意:以上是先建好本地库,再有远程库流程,工作中一般是直接从远程仓库拉取代码下
从远程库克隆
查看远程库信息
本地主分支一定要与远程库对应,修复bug分支可以和本地主分支合并后再推送到远程库
多人协作工作模式流程
<<<<<<< HEAD ======= >>>>>>> fenzhi1
<<<<<<< HEAD 主分支上修改的内容 ======= 分隔符 >>>>>>>fenzhi1 分支上修改的内容
多次提交时间串成一条时间线,就是一个主分支,即master分支,HEAD指向master也就是当前分支,master指向提交
创建分支并切换
查看分支
git branch
创建分支
git branch dev
切换分支
git checkout master
创建并切换分支
git checkout -b dev
提交的分支不同,内容不同
master(当前分支) 合并dev分支
git merge dev
合并后删除dev分支
git reset --hard HEAD^
git reset --hard HEAD~5
回退到最新版本
git reflog
git reset --hard 版本号
撤销修改(当不用版本回退时可使用)
未添加到暂存区
已添加到暂存区
-- 不能漏,否则变成创建/切换分支
删除文件
恢复文件