介绍一下分支管理,原理在创建与合并分支介绍的很详细了,这里只记录一下指令
创建和合并分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
(将<name>
分支合并到当前分支上)
删除分支:git branch -d <name>
解决冲突
如上图所示,在feature1和master都做了修改的时候,合并就会提示错误
1 | $ git merge feature1 |
使用git status
确认不一致的文件
1 | git status |
此时直接修改不一致的文件,将不要的内容删掉,然后add + commit
即可,最后效果如下图
使用git log --graph --pretty=oneline --abbrev-commit
可以查看分支合并图
分支策略管理
使用git merge <name>
效果如下,这种模式下,删除分支后就会丢掉分支信息
使用git merge --no-ff -m "merge with no-ff" <name>
合并,会创建一个新的commit,效果如下
使用git log --graph --pretty=oneline --abbrev-commit
可以查看分支合并图
Bug分支(stash)
当在dev分支下开发时,发现master主分支下有急需修复的bug,可以使用git stash
存储当前状态,然后切换回master分支,新建issue
分支,在issue分支上修复之后merge到主分支,然后切换回dev分支恢复stash的内容继续开发
当前工作区不为空
1 | git status |
贮存当前工作现场
1 | $ git stash |
修bug
1 | # 切换回主分支,新建issue分支 |
恢复工作现场
1 | git checkout dev |
Feature分支
1 | git checkout -b feature-vulcan # 新建 |
此时,有两种选择,一种是将新分支feature-vulcan
并入dev
分支,另一种是放弃feature-vulcan
分支。
1 | # 并入 + 删除 |
多人协作
查看远程库的信息:git remote -v
推送master分支:git push origin master
抓取分支:git clone https://...git
创建远程origin
的dev
分支到本地:git checkout -b dev origin/dev
推送dev分支:git push origin dev
从远程仓库获取最新版本:git pull
设置本地分支与远程分支的链接:git branch --set-upstream dev origin/dev
若pull之后有冲突,检查冲突内容并修改,再add + commit + push
因此,多人协作的工作模式通常是这样:
- 首先,可以试图用
git push origin branch-name
推送自己的修改; - 如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; - 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用
git push origin branch-name
推送就能成功! - 如果
git pull
提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。