Git合並分支出現的沖突解決


人生不如意之事十有八九,合並分支往往也不是一帆風順的。

我們准備新的分支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 命令可以看到分支合並圖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM