1. 程式人生 > >svn或者git同時進行提交的時候程式碼產生衝突了怎麼辦

svn或者git同時進行提交的時候程式碼產生衝突了怎麼辦

Git衝突解決方案

在程式開發的時候,我們使用Git的時候,不得不面臨著一個檔案被多個人修改和提交,這樣就會產生衝突,如果處理不好,不僅衝突解決不了,還會造成回滾程式碼,或者程式碼覆蓋,損失利益,所以我通過實踐模擬,寫了此規範操作,希望同事們遇到衝突無法解決時,可以幫助大家解決問題。一共十個步驟,每一步都不能簡化省略。

第一步:pull一下,更新程式

方法:右鍵專案->Team->pull

此時會出現衝突,如上圖,紅框內就是衝突的檔案,一份是來自本地,一份是來自伺服器端。專案名稱的右邊有個向下的箭頭,表示沒有pull成功,數字代表衝突的檔案數,現在先點選OK,不用管它。

第二步:同步,檢視衝突程式碼

方法:右鍵專案->Team->SynchronizeWorkspace

可以看到左側的一行目錄中,紅方塊表示有程式碼衝突的檔案,右箭頭代表沒有衝突,但是伺服器端要更新的檔案。沒有衝突的檔案可以先不管它,雙擊紅方塊,可以看到本地和伺服器端的程式碼對比圖,可以清楚看到,左側是本地的,右側是伺服器端的。

第三步:人工修改,保持本地最新版

方法:可以直接對照伺服器端進行修改。

 假如,我們人工修改了前三行,前三行要伺服器端的程式碼,剩下的兩行要我們本地的程式碼,這樣讓本地組成最新版的程式碼。Crtl+S儲存,我們可以看到原來衝突的五行,變成了兩行。

第四步:Add to Git Index,提交修改

方法:衝突檔案右鍵->Add to Git Index

此時,紅方塊檔案上出現了一個黑色的*,此步驟表示已經修改完了,準備好提交了。

第五步:Commit提交

方法:專案右鍵->Team->Commit或者使用Git Staging,我用的是Git Staging

此方法目的是要把修改好的檔案提交到本地倉庫,一定要記住,修改了什麼檔案就提交什麼,不要全部提交,如果使用Git Staging,則拖到Staged Changes中,然後寫好Commit Message,最後選擇Commit。【不要選擇Commit and Push,你是push不上去的,因為現在還屬於衝突狀態,而Commit是提交到本地倉庫】。

因為還沒push,所以此時可以看到專案右邊的箭頭出現了一個上箭頭,可以理解為push到伺服器端不成功,

第六步:再次pull一下,更新程式

方法:專案右鍵->Team->pull

此時,我們可以看到專案出現了合併項,文字框內出現的兩個版本就是要合併的物件,不用管它,點選OK。

我們可以看到,紅方塊又出現了。這次是提示你要進行人工合併,步驟和第三步有所不同。

第七步:人工合併,更新到最新版

我們點開程式後,發現,出現了很多非程式的東西,甚至造成了檔案報錯,這是因為把兩個版本的檔案進行了合併,並且保留所有版本,於是要人工對不想要的版本進行刪除。HEAD包含的是本地的版本,而====下面的是伺服器端的版本。假如我們修改後,得到如下版本:

此時本地版本為最新版本。

第八步:Add to Git Index,確認修改

方法:衝突檔案右鍵->Team->Add to Git Index

我們可以看到檔案又變成了我們熟悉的黑色*。

第九步:Commit提交

方法:Git Staging或者專案右鍵->Team->Commit

此時,我們發現衝突檔案已經放入Staged Changes,而Message中寫的是衝突檔案和合並的物件,不過不用管它,照樣刪除,重新寫上自己想寫的文字,例如“OK,測試Git提交”。

設定好後,點選Commit進行提交,此時,依然是提交到本地倉庫。此時發現下箭頭不見了,只剩下了上箭頭,說明pull已經成功了。

第十步:push

方法:專案右鍵->Team->push branch

此步驟是本地倉庫向遠端倉庫進行提交,選擇push branch是要提交到指定的分支,這樣做就不會造成分支選擇錯誤。選擇好提交路徑,點選Next。

此時,沒有了衝突,點選Finish就可以提交了,然後點選OK,大功告成,此時專案名稱右側的箭頭也全部消失了。恭喜你,你已經把本地最新版的程式碼提交到Git上了。