Git 合并沖突處理

一個(gè)項(xiàng)目使用git從多條分支進(jìn)行開(kāi)發(fā),一個(gè)分支上的修改可能和一個(gè)不同分支上的相似,在合并時(shí)難免會(huì)產(chǎn)生沖突。在產(chǎn)生沖突時(shí)通常需要我們自己指導(dǎo)來(lái)解決。

首先用一個(gè)簡(jiǎn)單的場(chǎng)景重現(xiàn)合并產(chǎn)生沖突。

新建一個(gè)文件夾GitMerge,里面新建一個(gè)“a.txt ”,內(nèi)容是hello world,并使用 git init 初始化本地git庫(kù)。

git add a.txt 加入追蹤,并提交到版本庫(kù)git commit -a 提交描述為create txt

git branch alternate 創(chuàng)建分支alternate?

在主線master中修改文件a.txt ,將內(nèi)容修改為“hello world master”,并將修改提交(描述:add master)。

切換到alternate分支,同樣對(duì)a.txt 文件做修改,修改為“hello world alternate”,并提交(描述:add alternate)。

提交完可以使用git log 查看提交的歷史記錄。

下面切換到主線master(git checkout master),把分支alternate合并到master(git merge alternate)。

因?yàn)槲覀冊(cè)趍aster和alternate中都是修改的同一文件的同一地方,可以看到合并時(shí)產(chǎn)生了沖突。這時(shí)Git會(huì)把有沖突的地方標(biāo)記出來(lái),但不會(huì)處理,需要我們自己手動(dòng)去處理??梢允褂?b>git diff 調(diào)查沖突的程度。

其實(shí)在產(chǎn)生沖突的文件中,Git已經(jīng)把產(chǎn)生沖突的地方標(biāo)記出來(lái)了,查看a.txt 文件,可以看到。

可以看出master修改的內(nèi)容在<<<和===之間(當(dāng)前為master分支,HEAD指向master),alternate修改的在===和>>>之間。

這種情況我們可以根據(jù)需求選擇master上的內(nèi)容或者alternate的內(nèi)容,或者是用全新的內(nèi)容來(lái)代替。我這里選擇的是master的內(nèi)容,所以將alternate修改的刪除即可。在手動(dòng)編輯完a.txt 后。

執(zhí)行 git add a.txt?

再執(zhí)行git commit,編輯commit信息。

合并沖突處理完成。

最后使用git log 查看一下提交歷史。

借助第三方可視化工具。

這只是一個(gè)最簡(jiǎn)單的合并沖突場(chǎng)景重現(xiàn),實(shí)際項(xiàng)目中的沖突可能復(fù)雜的多,但是一樣可以依據(jù)這個(gè)來(lái)處理。

補(bǔ)充幾個(gè)命令:

git reset --hard HEAD ?終止合并,撤銷(xiāo)未提交的合并,會(huì)把工作目錄和索引都還原到git merge命令之前。

git reset --hard ORIG_HEAD? 撤銷(xiāo)已經(jīng)提交的合并。可能會(huì)遇到丟失目錄中未提交的修改。用git reset --merge ORIG_HEAD 可避免。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,705評(píng)論 4 54
  • 如果可以,一定不要去傷害你在意的人,因?yàn)橛行﹤φ娴氖遣豢赡娴?,就算傷口已?jīng)愈合,但是疤痕尤在,它就在那里無(wú)聲的提...
    時(shí)光的船閱讀 631評(píng)論 0 2
  • 小江老絲啊閱讀 290評(píng)論 0 0
  • s?j?j?d?j?k?d?j?k
    翱翔_a2a0閱讀 154評(píng)論 0 0
  • 01 “告訴我,你看見(jiàn)了什么?”輕柔的聲音在我耳邊問(wèn)道。 我感覺(jué)自己被水一般的溫柔包裹,眼前出現(xiàn)一片草原,天空好藍(lán)...
    蘇洛洛66閱讀 228評(píng)論 0 1