人生不如意之事十有八九,合並分支往往也不是一帆風順的。
我們准備新的分支newbranch.
LV@LV-PC MINGW32 /c/gitskill (master)
$ git checkout -b newbranch
Switched to a new branch 'newbranch'
修改readme.txt,在最后一行添加:
$ cat readme.txt
master分支內容
添加dev分支內容
分支合並測試
在分支newbranch上提交:
LV@LV-PC MINGW32 /c/gitskill (newbranch)
$ git add readme.txt
LV@LV-PC MINGW32 /c/gitskill (newbranch)
$ git commit -m "newbranch first commit"
[newbranch cccee34] newbranch first commit
1 file changed, 2 insertions(+), 1 deletion(-)
切換到master分支上:
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
在master分支上把readme.txt文件的最后一行添加:
master分支上的合並測試內容
添加,提交
LV@LV-PC MINGW32 /c/gitskill (master)
$ git add readme.txt
LV@LV-PC MINGW32 /c/gitskill (master)
$ git commit -m "master branch merge test"
[master 4bb4c5a] master branch merge test
1 file changed, 2 insertions(+), 1 deletion(-)
這種情況下,自動合並會出現沖突:
LV@LV-PC MINGW32 /c/gitskill (master)
$ git merge newbranch
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
我們直接查看合並后的readme.txt文件內容:
$ cat readme.txt
master分支內容
添加dev分支內容
<<<<<<< HEAD
master分支上的合並測試內容
=======
分支合並測試
>>>>>>> newbranch
Git會用<<<<<<<,=======,>>>>>>>標記不同分支的內容,我們修改一下后保存
master分支內容
添加dev分支內容
master分支上的合並測試內容
分支合並測試
然后添加,提交:
LV@LV-PC MINGW32 /c/gitskill (master|MERGING)
$ git add readme.txt
LV@LV-PC MINGW32 /c/gitskill (master|MERGING)
$ git commit -m "branch merge"
[master f3d8f1e] branch merge
用帶參數的git log也可以看到分支的合並情況:
LV@LV-PC MINGW32 /c/gitskill (master)
$ git log --graph --pretty=oneline --abbrev-commit
* f3d8f1e branch merge
|\
| * cccee34 newbranch first commit
* | 4bb4c5a master branch merge test
|/
* 0d0bbca dev first commit
* d5aea29 master first commit
* 023ee21 Initial commit
現在,刪除newbranch分支:
LV@LV-PC MINGW32 /c/gitskill (master)
$ git branch -d newbranch
Deleted branch newbranch (was cccee34).
LV@LV-PC MINGW32 /c/gitskill (master)
$ git branch
* master
小結:當Git無法自動合並分支時,就必須首先解決沖突,解決沖突后,再提交,合並完成
可以用$ git log --graph 命令可以看到分支合並圖。