Eclipse中Egit衝突解決

鴨脖發表於2016-02-24

Eclipse中Egit衝突解決

Git 作為進來最流行的分散式版本控制軟體來說應用的十分廣泛。EGit就是一款Eclipse上的Git外掛。在使用Egit提交專案時,有時會產生衝突,需要對程式碼進行merge。這裡對內容衝突的解決進行介紹。

內容衝突是指兩個使用者修改了同一個檔案的同一塊區域,git會報告內容衝突。

1. 產生內容衝突

我們原始檔案內容如下所示:

clip_image002

有兩個專案組同時對其進行修改:

1) GordonCoder將第三行中“System.out.println();”修改為“System.out.println(“Hello, GordonCoder”);”

2)Jiangpeizhao將第三行中“System.out.println();”修改為“System.out.println(“Hello, Jiangpeizhao”);”,

GordonCoder修改完檔案後commit 並push,之後Jiangpeizhao進行修改並準備提交。

2. 提交修改

在專案上右擊選擇Team-Commit,在彈出對話方塊中填寫“Commit message”並勾選需要提交的檔案,點選“Commit and Push”。如果沒有發生衝突,則提交正常;如果有衝突,則會填出下面的對話方塊“master:master[rejected – non-fast-foward]”:

clip_image004

此時在專案上右擊選擇Team-Synchronize Workspace

clip_image006

此時Eclipse介面如下,會跳到Team檢視:

clip_image008

專案資料夾右側有“↑1”和“↓1”,說明有一個未push的修改和一個未pull的修改。開啟下面的History視窗,可以看到最上面的兩條修改,一個由Jiangpeizhao提交,一個由Gordon提交。

此時產生衝突。

3. 解決衝突

首先,將修改從遠端pull到本地,點選下圖的小按鈕:

clip_image009

點選後如下圖所示:

clip_image011

其中”<<<<<<< HEAD”、”=======”、“>>>>>>> branch 'master' ofhttps://git.oschina.net/Jpz/SpringDemo2.git”直接的就是雙方的修改。

右擊專案,選擇”merge tool”:

clip_image013

如果”merge tool”是灰色的,如下圖所示:

clip_image015

那麼可能是由於沒有在本地進行Commit或者沒有進行pull。

點選”merge tool”後彈出:

clip_image017

注意現在檔案圖示下的紅箭頭,這是衝突的標誌。如果沒有彈出這個對話方塊,那是因為Git設定的問題。選擇Window-preference:

clip_image019

在彈出對話方塊中找到Team-Git,將Merge tool context設定為第一個選項”Prompt when starting tool”,點選OK:

clip_image021

在下面填出的對話方塊中

clip_image017[1]

選擇第二個選項,之後如下所示:

clip_image023

手動來解決衝突,在本例中將這一行改為“System.out.println(“Hello, everyone”);”修改完後保持(ctrl+s,呵呵)。

右擊專案,選擇”Add to git index”:

clip_image025

注意此時圖示的變化。

clip_image027

4. 合併merge

右擊專案,選擇”Commit…”提交至本地,此時的提交便是合併:

clip_image029

彈出視窗如下:

clip_image031

點選“Commit”。如果是隻有一個衝突,此時也可以直接點選“Commit and Push”

點選“Commit”後如下所示,注意箭頭數:

clip_image033

此時解決一個衝突,如果衝突多,需要繼續處理,就繼續按以上步驟來。解決完後,點選”Push”:

clip_image034

最後如下所示:

clip_image036

點OK即可。

5. 檢視history:
在java界檢視,右擊專案選擇“team-show in history”,如下所示:

可以檢視history:

clip_image040clip_image038

關於Egit的其他操作課參考:

http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html

http://wiki.eclipse.org/EGit/User_Guide

相關文章