Eclipse里git提交沖突rejected – non-fast-forward


  Eclipse里commit代碼,其實只是提交到本地倉庫,需要push才會提交到遠程的git倉庫,這時是一個本地倉庫到遠程倉庫的同步過程。Git是分布式的,每個人在本地倉庫維護本地的自己的那一份代碼,commit時只提交到本地倉庫,不會影響到別人。當你push到遠程倉庫就可能發生沖突了。假如別人在你push前也push了同一個文件,那么問題就來了,沖突了,rejected – non-fast-forward出現了。

  解決方法一:每次本地修改代碼前先從git倉庫pull下想要提交的分支的最新代碼,改完了commit並push到git倉庫。這里有個前提,修改、commit和push期間沒人動你修改的文件。

  解決方法二:期間文件在git倉庫被改了,那么重新從git倉庫獲取最新的分支代碼,然后把自己的修改放上去提交。

  解決方法三:通過merge來解決沖突。當出現rejected – non-fast-forward別慌,這時我們可以識別哪些文件有沖突,一個一個改,改好了再pull下最新代碼,然后提交到遠程倉庫。

  下面具體說明下提交操作:

1、單個文件提交:首先跟遠程倉庫做比較,右鍵修改的文件和目錄->Team->Synchronized Workspace->確保沒有沖突后再次右鍵修改的文件和目錄->commit,在Git Staging里選中Unstaged Changes窗口里要提交的文件->Add to Index->在Commit Messge里寫提交說明->Commit and Push->Next,注意這里不要選最下面的Force overwirte branch in remote if exists and have deverged,否則本地倉庫會覆蓋遠程倉庫,造成覆蓋別人代碼的嚴重后果->OK

2、沖突解決:上面在Synchronized Workspace后出現沖突會有鮮艷的紅色箭頭出現,雙擊就可以看到哪個地方沖突了,一般是先把本地的改動保存好,從遠程取下最新內容,再加上本地修改,最后提交。圖示如下:

上面本地文件改動了,遠程文件新增了,所以沖突了,右鍵選中該文件,點擊Merge:

 

 

 

可以看到新怎的那一條自動復制到本地來了,接着右鍵點擊Commit,輸入提交說明,提交到本地倉庫。此時再Pull最新遠程git倉庫里的代碼到本地倉庫(沖突不解決Pull會報錯,Push報rejected – non-fast-forward),然后Push即可:

注意不要點強推,很容易覆蓋代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM