天天看點

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

稍微總結下弄了半個下午的egit的merge合并沖突解決方法,網上看的都是一個模闆出來的,看的糊裡糊塗,花了很多時間去實驗整個合并流程..

前提工作

  • 建立一個普通JAVA工程Test,建立一個類Test,寫點東西并加入到本地git庫;
  • 建立個develop分支,建立個Develop類,修改Test類的某些語句,添加新代碼段,送出;
  • 切換到master分支,建立個Master類,修改Test類的同一部分語句,送出;

以上三條操作不進行詳細說明,很簡單的。

合并過程

打開git repository exploring視圖:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

在Test庫中,在develop分支上打開右鍵菜單,點選Merge:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

出現沖突提示框:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

傳回JAVA工程項目視圖,可以看見Test工程已經自動進行了部分合并,添加了Develop類,但Test類存在沖突(有紅色雙箭頭标記的檔案才是沖突,茶色星星标記的檔案沒有實際沖突項),選中工程打開右鍵菜單,打開Merge Tool:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

Merge Tool界面顯示如下,左邊為沖突檔案的目前版本(master分支),右邊為準備合并過來的目标版本(develop分支),手工把右邊的代碼copy到左邊,或至少随意更改下左邊的檔案,儲存。  注:右邊的視窗有時候标題顯示的版本節點不正确,可能是BUG,或者筆主了解能力不足所緻。

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

在Merge Tool中更改并儲存後,目前沖突的Test類如下圖中的各種神奇标記符号将自動消除:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

上圖的紅色神奇符号已經自動合并消除,并呈現類似下圖的合并效果:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

Window->Show View->Other,打開Git Staging視圖:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

Git Staging視圖中,Unstaged Changes部分包含沖突檔案(包括手工合并前後),Staged Changes部分包含已經完成自動合并的檔案,在已經合并完成的沖突檔案Test.java上打開右鍵菜單,選中Add to Git Index:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

Test.java被添加到Staged Changes下面,并自動生成Commit Message等内容,确認無誤後點選Commit送出:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

至此,Merge合并的沖突已經完全解決,從develop到master方向的合并已經完成:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

若要從master合并到develop,隻需切換到develop分支,(在git repository exploring視圖中)在master菜單上點選Merge即可。筆主使用的Egit2.2版本預設進行Fast-Forward方式的合并,最新的3.2版已經提供是否選擇Fast-Forward的UI視窗。

* 關于Egit3.2的Fast-Forward合并:提供該選擇的UI視窗僅在JAVA視圖視窗中,通過項目工程右鍵菜單中執行Team->Merge觸發顯示,通過上面使用git repository exploring視圖簡單調用Merge的方式仍然使用預設的Fast-Forward合并:

eclipse 插件_Eclipse的Git插件Egit: merge合并沖突具體解決方法

==============================================

https://allaboutmynonexistedworld.wordpress.com/2014/02/05/eclipse-git-merging-branch-to-master/

下一篇: MacVTap

繼續閱讀