1. 程式人生 > >分支管理~解決合併的衝突(十)

分支管理~解決合併的衝突(十)

生活總是這樣,那樣,反正不是你想的那樣。合併分支往往也不是一帆風順的。

1、在分支上修改、新增、提交:

準備新的 feature1分支,繼續我們的新分支 feature1 實踐開發,如下:

我們在資料夾 gitSkills 目錄下,將 readme.txt 檔案 裡最後一行的內容新增為,如下:

然後在分支 feature1 分支上新增、提交:

提交完成之後、我們切換到主線 master 分支,如下:

  • Your branch is ahead of 'origin/master' by 1 commit.;翻譯為:你的分支在“起源/主人”之前提交1次。

  •   (use "git push" to publish your local commits)   翻譯為:使用“git push”釋出你的本地提交。

Git還會自動提示我們當前 master 分支比遠端的 master 分支要超前1個提交。

2、在主線master 分支上修改、新增、提交:

master 分支上把 readme.txt 檔案的最後一行改為,如下:

新增、提交,如下:

以上兩種情況下, master 分支 和 feature1 分支, 各自都分別有新的提交 git commit ,變成如下這樣:

這種情況下,Git無法執行“快速合併(fast forward)”,只能試圖把各自的修改合併起來,但這種合併就可能會有衝突,接下來我們將兩條分支一起合併起來,如下:( git merge

  • CONFLICT (content):Mearge conflict in readme.txt 翻譯為:衝突(內容):在 readme.txt 上 合併衝突;
  • Automatic merge failed;fix conflicts and then commit the result  翻譯為:自動合併失敗;修復重複,然後提交結果;

由上圖可知,Git 告訴我們 ,readme.txt 檔案存在衝突,必須手動解決衝突後再提交。

3、手動修改衝突檔案:

我們也可以使用命令 git status 來檢視 衝突檔案,如下:

我們直接開啟gitSkills目錄下的檔案 readme.txt,檢視 readme.txt 的內容,變成以下情況:

Git用 <<<<<<<=======>>>>>>>  標記出不同分支的內容,開啟衝突檔案 readme.txt 直接手動修改內容,如下,

使用命令 cat 檢視 內容:

接著,新增、提交,如下:

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

用帶引數的 git log 也可以看到分支的合併情況,如下:( 命令:git log --graph --pretty=oneline --abbrev-commit )

最後,刪除 feature1 分支,如下:

小結:

          1、當Git無法自動合併分支時,首先必須在衝突檔案readme.txt上,手動解決衝突。解決衝突後,再提交,合併完成。

          2、解決衝突就是把Git合併失敗的檔案,在裡面修改成我們想要的最終內容,在提交;

          3、用  git log --graph  命令可以看到分支合併圖。


轉自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000