使用Eclipse-Maven-git做Java開發(14)--開發中對git的使用
前面的文章說到了怎么講本地的項目代碼托管到git托管服務中,本文將來說一下日常的開發中對git的使用來進行開發。
(上次才說了要縮短更新時間,但是實在抱歉,中間出了一些事情,耽擱了一段時間)。
0、要求
要達到前一篇博客說明的條件,也就是代碼已經托管到git中了,并且本地的環境那些也是對的。本次演示使用上一篇博客使用的那個工程。
1、遠端代碼到本地代碼的同步
之前只說了本地代碼提交推送到遠端,有時候遠端有更新的提交需要同步到本地來,接下來就演示一下怎么操作。
為了演示這種情況,我會在web上進行一次修改,模擬出有更新的提交,然后在本地的STS中進行查看與同步。
1.1 在web進行修改

點擊“編輯”進行編輯,然后做出一些修改,提交。

修改過后的文件內容:

1.2 本地STS中查看修改
在同步之前,先在本地STS的倉庫管理中對應的倉庫上面查看歷史,看看同步之前的樣子,右鍵倉庫記錄->"show in"->"history":

從提交時間上可以看到,剛才的那次提交并不在列表中,

這也是符合git是分布式版本管理的設定的,接下來我們查看遠端的代碼倉庫情況。右鍵倉庫記錄->"fetch from upstream",等到網絡傳輸,然后會有提示說遠端是否有改動。

但是這個時候在“history”視圖是看不到的,因為還沒有拉取下來,但是在倉庫記錄的條目上會有一個向下的箭頭,表示需要進行拉取以保持同步。
1.3 拉取改動
我們在倉庫上右鍵->“pull”拉取遠端上的改動

拉取過后會有提示框說明本次拉取的結果,然后在“history”視圖中也會看到記錄。

2 沖突的出現與沖突的解決
剛才的演示中是本地沒有修改與同步得來的修改沖突的,要是本地有一個修改是與遠端修改沖突了的呢?這種情況經常出現,所以有必要說明一下處理方法。
2.1 制造沖突
還是那樣,我們在web上做一次提交,使得文件成為這樣:

然后,我們在本地的STS中進行修改,使得文件成為這樣,:

并提交但是不推送

2.2 拉取遠端變更,得到沖突
在fetch之后會看到倉庫記錄條目上有一個向上和一個向下的箭頭,表示需要推送也需要拉取,這個時候直接推送是不行的,需要先拉取,我們使用先前的方法進行拉取:

然后就會得到這樣的提示:

文件中標注了沖突的具體情況,文件視圖中表明了哪些文件有沖突,倉庫視圖中對應的記錄標注該倉庫有沖突。
2.3 解決沖突
這個時候你推送是不行的,會提示你需要解決沖突。接下來我們就解決沖突,然后推送。
首先將文件內容進行修改,根據實際的情況修改為這個文件本來的內容,具體怎么改得看具體情況。
"<<<<<<< HEAD"以及后面的"=========="之間的內容是本地的"HEAD"指向的版本,后面的是遠端與之沖突部分的版本。
我這里就直接保留兩個版本,將兩行都留下來。
這里補充一下,推薦一款軟件-------"Meld",是一個非常好用的文件對比工具,同時提供版本控制軟件的對比公能,能夠找出哪些地方修改了、沖突等,自由軟件(GNU)、跨平臺,官方網站,使用linux的時候可以使用它來進行沖突解決,windows版本的不是很好用。
使用“版本控制”功能,加載我們需要處理的git倉庫;然后設置顯示“修改”和“沖突”,不顯示“未修改”的,查看出現沖突的文件;然后在視圖中就可以看到是怎么個沖突法了,而且還可以直接標記為“已解決沖突”。

修改文件之后,保存,這個時候需要做一些操作,然后才能提交,否則是不成功的。
在工程視圖中文件上右鍵->"team"->"add to index":

然后你就會發現,原先標記的沖突都不見了:

這個時候就可以愉快的提交啦,不過這個時候的提交注釋信息已經有一部分填寫好了:

直接提交、推送,然后在遠端和本地就都是一樣的啦。
3 暫停一下
好了,本文就先說到這里,下一文將說一下git的使用管理,例如分支、標簽、分支合并等。
enjoy!!!