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