友情提醒:
第一章、Git代碼沖突介紹
1.1)什么是Git代碼沖突
①git merge命令介紹
git merge 用于本地分支的合并。將一個(gè)本地分支的更改合并到另一個(gè)本地分支時(shí),你會(huì)使用git merge命令。
git merge命令用于將一個(gè)分支的更改合并到另一個(gè)分支。它會(huì)將兩個(gè)分支的更改整合在一起,保留詳細(xì)的合并信息,并成為一個(gè)新的提交。
例如,假設(shè)有一個(gè) develop分支和一個(gè) master 分支,您在 develop分支上開發(fā)了新的功能,然后想要將這些更改合并到 master 分支中。您可以切換到 master 分支,然后運(yùn)行 git merge develop命令來(lái)實(shí)現(xiàn)這一目的。
②代碼沖突原因
指在合并(merge)分支或拉取(pull)遠(yuǎn)程代碼時(shí),Git無(wú)法自動(dòng)解決不同分支或版本之間的代碼差異,從而導(dǎo)致代碼沖突。這種沖突通常發(fā)生在同一文件的同一行或相鄰行上,但內(nèi)容不一致的情況下。當(dāng)Git檢測(cè)到這種情況時(shí),會(huì)標(biāo)記出沖突的部分,并要求開發(fā)人員手動(dòng)解決這些沖突。通常需要開發(fā)人員手動(dòng)編輯代碼,選擇保留和合并哪些代碼,最終手動(dòng)解決沖突并提交合并后的代碼。
1.2)提示代碼沖突的兩種情況
①本地不同分支的文件有差異時(shí):
在Git中,合并分支可以在本地進(jìn)行,也可以在遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行。因?yàn)橐话悴粫?huì)去遠(yuǎn)程倉(cāng)庫(kù)合并。我們這里只討論本地分支合并。
使用git merge命令合并本地分支時(shí),因?yàn)楦鞣N原因造成了不同分支的相同文件有差異合并時(shí)就會(huì)導(dǎo)致代碼沖突。
場(chǎng)景1:合并本地分支
從本地master分支拉出了develop分支,在develop分支上開發(fā),在這期間,各種原因,master分支發(fā)生了變化。等你想把develop分支合并到master分支,提示代碼沖突。
②本地倉(cāng)庫(kù)和git遠(yuǎn)程倉(cāng)庫(kù)的文件有差異時(shí):
pull命令自動(dòng)將遠(yuǎn)程分支的更改合并到當(dāng)前本地分支,
push命令自動(dòng)將當(dāng)前本地分支的更改合并到遠(yuǎn)程分支,
因此實(shí)際上這兩個(gè)命令包含了合并(merge)操作。可能導(dǎo)致代碼沖突。出現(xiàn)代碼沖突一般都需要在本地手動(dòng)解決,不可能push上去遠(yuǎn)程倉(cāng)庫(kù)那邊,那邊沒(méi)有人會(huì)給你處理沖突,所以這里只討論pull操作。
場(chǎng)景2:pull拉取代碼
開發(fā)者A和開發(fā)者B都從遠(yuǎn)程倉(cāng)庫(kù)克隆了代碼到本地。A開發(fā)者修改了一個(gè)代碼文件后提交代碼到git遠(yuǎn)程倉(cāng)庫(kù)成功,B開發(fā)者在本地修改了同一個(gè)代碼文件的相同部分,這時(shí)本地倉(cāng)庫(kù)和git遠(yuǎn)程倉(cāng)庫(kù)的文件出現(xiàn)了差異,拉取會(huì)提示代碼沖突。
1.3)解決合并時(shí)的代碼沖突
①打開沖突文件,手動(dòng)編輯以解決沖突:
查看沖突標(biāo)記:在文件中查找沖突標(biāo)記,通常是"<<<<<<<“,”=======",和 “>>>>>>>”, 這些標(biāo)記將沖突的代碼塊分隔開來(lái)。
②解決沖突:
手動(dòng)編輯文件,選擇保留需要的代碼,刪除不需要的代碼,并移除沖突標(biāo)記,保存文件。
③添加文件并提交到遠(yuǎn)程倉(cāng)庫(kù):
使用 “git add” 命令將解決沖突后的文件添加到暫存區(qū)。。運(yùn)行 “git commit” 命令提交已解決沖突的文件。運(yùn)行g(shù)it push命令將修改后的代碼推送到遠(yuǎn)程倉(cāng)庫(kù)。
第二章、遠(yuǎn)程與本地沖突實(shí)例
2.1)模擬沖突
開發(fā)者A修改了文件fileMergeTest.txt的第5行,然后將更改推送到遠(yuǎn)程倉(cāng)庫(kù)。如圖:
同時(shí),開發(fā)者B在本地也修改了文件fileMergeTest.txt的第5行如圖:
開發(fā)者B嘗試將遠(yuǎn)程倉(cāng)庫(kù)pull到本地。由于開發(fā)者A和開發(fā)者B修改了同一個(gè)文件的相同部分,開發(fā)者B在拉取時(shí)會(huì)遇到代碼沖突。并提示自動(dòng)合并失敗,需要修復(fù)沖突,并提交最新修改后的版本
開發(fā)者B在打開fileMergeTest.txt文件,會(huì)看到類似以下的標(biāo)記:
<<<<<<< HEAD
// 開發(fā)者B的更改
=======
// 開發(fā)者A的更改
>>>>>>>
如圖:
2.2)手動(dòng)編輯文件,解決沖突
開發(fā)者B需要手動(dòng)編輯fileMergeTest.txt文件,決定保留哪些更改,刪除哪些更改,直到解決所有沖突。 我選擇保留本地修改:
解決沖突后,開發(fā)者B使用git add fileMergeTest.txt命令提交到暫存區(qū),使用git commit命令提交更改,然后使用git push命令將更改推送到遠(yuǎn)程倉(cāng)庫(kù)。
查看遠(yuǎn)程倉(cāng)庫(kù),已經(jīng)同步更新了
2.3)如果本地修改量很大
先用git stash封存修改,再正常git pull了,git pull后,執(zhí)行g(shù)it stash pop將之前本地做的修改恢復(fù)到當(dāng)前工作區(qū)。這個(gè)時(shí)候就會(huì)報(bào)代碼沖突了,
打開沖突文件,手動(dòng)編輯解決后,commit繼續(xù)push
第三章、本地develop與本地master沖突實(shí)例
3.1)模擬沖突
master分支修改第五行:修改文件內(nèi)容后執(zhí)行命令
git add .
git commit -m 'messag'
切換到develop分支,依然修改第五行:修改文件內(nèi)容后執(zhí)行命令
git add .
git commit -m 'messag'
切回master分支,合并develop分支
git checkout master
git merge develop
提示合并失敗,內(nèi)容沖突文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-841912.html
3.2)解決沖突
打開文件,發(fā)現(xiàn)沖突位置
手動(dòng)編輯這個(gè)文件,解決沖突后提交文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-841912.html
到了這里,關(guān)于git中合并分支時(shí)出現(xiàn)了代碼沖突怎么辦的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!