git文件沖突合並的報錯:Your local changes to the following files would be overwritten by merge


記錄一下在項目里使用git遇到代碼沖突時的解決方法

問題:當我和我同事兩個人改了相同的一個文件,他在我提交前提交了,這時候我就提交不了了,並且也pull不下來他的代碼

會報錯:

Your local changes to the following files would be overwritten by merge:

解決方法一:git checkout還原然后再pull(就是覆蓋更新的意思)

解決方法二:先add 再commit 最后pull 就會在本地合並你的代碼,最后檢查沒問題再push

------------------------------------------------------------------------------------------------------------------------

下面是搜到的一篇比較詳細的git解決沖突文章分享給大家↓

 

假設沖突文件是 test/TestCase.php 

  下面分5種情況討論。 

1、本地不變。 
  然后遠程別人有更新。 
  git pull 
  這種最簡單,沒有沖突,本地工作區直接更新 
  
2、我本地修改,但是不add。 
然后遠程別人有更新,此時 :     
git pull, 
git會告訴你: 
error: Your local changes to the following files would be overwritten by merge: 
        tests/TestCase.php 
  此時,我  
   git checkout -- tests/TestCase.php 
  千萬注意,上條命令會導致你自己的修改丟失了!! 
  然后git pull.成功。 
  這種情況下,你自己的修改完全丟失。本地接受了遠程的修改。 
  
3、我本地修改,但是已經add了。 
  然后別人遠程更新, 
  git pull 
  這種情況,和上面幾乎一樣。 
  git reset HEAD test/TestCase.php  
  上面這條命令可以理解為add命令的逆命令。即,取消add操作。 
  
  然后繼續 
  git checkout -- tests/TestCase.php 
  千萬注意,上條命令會導致你自己的修改丟失了!! 
  然后git pull.成功。 
  這種情況下,你自己的修改完全丟失。 本地接受了遠程的修改。 

    
4、我本地修改,add 且 commit了 
  然后別人遠程更新, 
  git pull 
  注意:這種情況和第2,第3種情況不同。git會認為你的commit也很重要。同等重要。 
突然發現,自動進入vi界面。 
Merge branch 'master' of https://github.com/xxxx 
這什么意思呢?就是git會主動再幫你添加一個commit。 
先讓你寫點注釋,並且它已經幫你寫了幾句話 
那自己寫點東西,然后保存退出vi 
請注意,這個commit是在本地的,還沒有發到遠程。 
這個commit會自動合並 你添加到代碼,和 別人遠程更新的代碼, 
所以,之后請自己檢查一下這個代碼有無問題。 

  如果都沒有問題,則你現在 
  git push 
  這個命令可以把你的本地改動推送到遠程。 
  push之后,遠程得到你和他人的所有更新。push之前,僅本地得到你和他人的所有更新。 
  
5、使用分支功能。 
  git的分支功能很強大,應該多使用。 
  上面幾種情況都沒有使用分支。使用分支會更好。 
  首先,我本地新建並切換分支branch_1,自己起有意義名字,並修改文件。 
  git checkout -b branch_1 
    
  vi test/TestCase.php 
  git add tests/TestCase.php 
  git commit -m "change test" 
  
  現在,別人已經更新了遠程主分支代碼(沒更新就極其方便了,也不必說了,快速更新) 
  我想把分支合並到主分支。 
  我應該,先回到主分支,並更新。 
  git  checkout master 
  git pull 
  
  然后,在本地,把我的修改分支合並上去。 
  git merge branch_1 
  自動進入vi界面,讓你寫注釋。 
  
  然后會合並好。 
  類似提示: 
  tests/TestCase.php | 3 ++- 
  上面,兩個加號表示文件增加了兩行,一個減號表示文件減少了一行。 
  
  此時,注意,凡是進入vi界面后, 
  最好自己再檢查一下程序,檢查那些被提示修改過的文件,(這是一個好習慣,但我從來不遵守) 
  如果認為正確,最后, 
  git push,推送到遠程。 
  
  push之后,遠程得到你和他人的所有更新。push之前,僅本地得到你和他人的所有更新。 

========== 
總結,大部分情況下,都推薦使用第5種,使用分支的方法,來管理文件修改沖突。

轉自:https://www.iteye.com/blog/xieye-2433229


免責聲明!

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



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