使用Eclipse-Maven-git作Java開發(14)--開發中對git的使用

        前面的文章說到了怎麼講本地的項目代碼託管到git託管服務中,本文未來說一下平常的開發中對git的使用來進行開發。linux

        (上次才說了要縮短更新時間,可是實在抱歉,中間出了一些事情,耽擱了一段時間)。git

0、要求

        要達到前一篇博客說明的條件,也就是代碼已經託管到git中了,而且本地的環境那些也是對的。本次演示使用上一篇博客使用的那個工程。web

一、遠端代碼到本地代碼的同步

        以前只說了本地代碼提交推送到遠端,有時候遠端有更新的提交須要同步到本地來,接下來就演示一下怎麼操做。windows

        爲了演示這種狀況,我會在web上進行一次修改,模擬出有更新的提交,而後在本地的STS中進行查看與同步。網絡

1.1 在web進行修改


        點擊「編輯」進行編輯,而後作出一些修改,提交。分佈式

        修改事後的文件內容:
工具

1.2 本地STS中查看修改

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

        從提交時間上能夠看到,剛纔的那次提交併不在列表中,網站

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

        可是這個時候在「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!!!

相關文章
相關標籤/搜索