git ---- 產生沖突的場景 和解決辦法


1、git沖突的場景

  • 情景一:多個分支代碼合並到一個分支時;
  • 情景二:多個分支向同一個遠端分支推送代碼時;

實際上,push操作即是將本地代碼merge到遠端庫分支上。

關於push和pull其實就分別是用本地分支合並到遠程分支 和 將遠程分支合並到本地分支

所以這兩個過程中也可能存在沖突。
git的合並中產生沖突的具體情況:
  <1>兩個分支中修改了同一個文件(不管什么地方)
  <2>兩個分支中修改了同一個文件的名稱
兩個分支中分別修改了不同文件中的部分,不會產生沖突,可以直接將兩部分合並。
 
2、沖突解決方法
  • 情景一:在當前分支上,直接修改沖突代碼--->add--->commit。
  • 情景二:在本地當前分支上,修改沖突代碼--->add--->commit--->push

 注:借用vim或者IDE或者直接找到沖突文件,修改。

3、實戰演示

(1)情景

  本地庫中兩個不同分支,修改同一個文件同一代碼塊,兩分支先后將修改合並到master分支上,master在合並第二個分支代碼時,報錯:合並沖突。

(2)本地庫

  <1>master分支

 

<2>建立兩個分支

<3>兩分支修改提交

aBranch分支:

bBranch分支:

(3)合並分支產生沖突

合並aBranch分支(將aBranch分支合並到當前master分支上):

注:
git merge:默認情況下,Git執行"快進式合並"(fast-farward merge),會直接將Master分支指向Develop分支。
使用--no-ff參數后,會執行正常合並,在Master分支上生成一個新節點。為了保證版本演進的清晰,建議采用這種方法。

再合並bBranch分支,產生沖突:

mergeTest.txt 文件內容:

(4)解決沖突

--->在當前分支上(master),找到沖突文件,直接修改沖突代碼,add,commit。

注:簡單方法,使用vim修改,cat查看沖突文件。(注意要刪除git自動生成的沖突代碼分隔符)

(5)完成沖突解決

 

注:提交或者合並都會生成git節點。每個節點對應一個代碼版本。

 

注:轉載作者 -----  下面 作者 github 地址。

Github:https://github.com/gavincoder


免責聲明!

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



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