1. 程式人生 > >Git衝突與解決方法【轉】 Git衝突與解決方法

Git衝突與解決方法【轉】 Git衝突與解決方法

本文轉載自:https://www.cnblogs.com/gavincoder/p/9071959.html

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節點。每個節點對應一個程式碼版本。

 

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節點。每個節點對應一個程式碼版本。