1. 程式人生 > >eclipse git解決衝突

eclipse git解決衝突

前提工作

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

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

合併過程

開啟git repository exploring檢視:

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

出現衝突提示框:

返回JAVA工程專案檢視,可以看見Test工程已經自動進行了部分合並,添加了Develop類,但Test類存在衝突(有紅色雙箭頭標記的檔案才是衝突,茶色星星標記的檔案沒有實際衝突項),選中工程開啟右鍵選單,開啟Merge Tool:

Merge Tool介面顯示如下,左邊為衝突檔案的當前版本(master分支),右邊為準備合併過來的目標版本(develop分支),手工把右邊的程式碼copy到左邊,或至少隨意更改下左邊的檔案,儲存。   注:右邊的視窗有時候標題顯示的版本節點不正確,可能是BUG,或者筆主理解能力不足所致。

在Merge Tool中更改並儲存後,當前衝突的Test類如下圖中的各種神奇標記符號將自動消除:

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

Window->Show View->Other,開啟Git Staging檢視:

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

Test.java被新增到Staged Changes下面,並自動生成Commit Message等內容,確認無誤後點擊Commit提交:

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

若要從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合併:

最後

筆主最近在糾結個問題,從google下載下來的adt bundle,內建的eclipse3.8版,安裝egit3.2的時候會自動連帶把eclipse平臺升級到4.2,然後介面各種崩壞,各種BUG,懷疑是外掛中的Mylyn部分升級所致...安裝svn外掛也見有類似問題,但家裡的同一個3.8版eclipse升級到egit3.2卻沒有這種問題,原因不明,不知道各位是否有順利從3.8升級egit到3.2版並順利阻止eclipse平臺連帶升級的高人,望留言賜教!!