1. 程式人生 > >【Git學習筆記】merge的時候有衝突怎麼辦?

【Git學習筆記】merge的時候有衝突怎麼辦?

當我們將分支merge到一起的時候,如果分支之間有衝突了,必須先要手動解決分支間的衝突之後再merge。

【分支feature1的修改】

第一步:新建分支,並切換到分支
git branch feature1
git checkout feature1
第二步:修改readme.txt,在readme.txt的最後一行新增如下內容:
Creating a new branch is simple AND quick.
第三步:add,並commit到版本庫
git add readme.txt
git commit -m "AND simple"
【在master分支上修改】

第一步:切回master分支

git checkout master
第二步:修改readme.txt,在readme.txt的最後一行新增如下內容:
Creating a new branch is simple & quick.
第三步:add,並commit到版本庫
git add readme.txt
git commit -m "& quick"

【將feature1合併到master】

現在,master分支和feature1分支各自都分別有新的提交,變成了這樣:

(引自:廖雪峰的官方網站)

這種情況下,Git無法執行“fast-forward合併”,只能試圖把各自的修改合併起來,但這種合併就可能會有衝突,我們試試看:


從結果上看,說明merge的時候有衝突了。要求我們先fix conflicts。

第一步:哪些檔案有衝突?


從結果看到,當前在master分支上,有一個沒有merge過來的分支,這兩個分支上都也修改了readme.txt。說明,衝突有可能就存在於這個readme.txt裡面。

第二步:檢視衝突所在的檔案的內容


Git用”=======“區分兩個分支上的內容。”=======“與“<<<<<<<HEAD”之間是當前所在分支上的內容;”=======“與“>>>>>>>feature1”之間是feature1分支上的內容;

第三步:修改readme.txt,將內容改為:

Creating a new branch is simple and quick.
第四步:add,並commit到版本庫

在,master分支和feature1分支變成了下圖所示:

(引自:廖雪峰的官方網站)

用帶引數的git log也可以看到分支的合併情況:

現在,刪除feature1分支:

git branch -d feature1
工作結束。