問題描述:
本地修改了代碼后,執行“git pull”命令時,無法更新代碼,並報錯提示:“Your local changes to the following files would be overwritten by merge”
問題原因:
是因為本地修改的代碼與git服務器的代碼沖突導致。如果不沖突,會自動更新合並代碼。
git pull沖突的解決辦法:
1. 忽略本地修改,強制拉取遠程到本地
主要是項目中的文檔目錄,看的時候可能多了些標注,現在遠程文檔更新,本地的版本已無用,可以強拉
git fetch --all
git reset --hard origin/dev
git pull
關於commit和pull的先后順序,commit——》pull——》push 和 pull——》commit——》push的順序,兩種情況都遇到過代碼沖突。解決方法如下:
2. 未commit先pull,視本地修改量選擇revert或stash
// 場景
同事 有新提交
我 沒有pull -> 修改了文件 -> pull -> 提示有沖突
2.1 本地修改量小
如果本地修改量小,例如只修改了一行,可以按照以下流程
-> revert(把自己的代碼取消) -> 重新pull -> 在最新代碼上修改 -> [pull確認最新] -> commit&push
2.2 本地修改量大,沖突較多
有兩種方式處理
-> stash save(把自己的代碼隱藏存起來) -> 重新pull -> stash pop(把存起來的隱藏的代碼取回來 ) -> 代碼文件會顯示沖突 -> 右鍵選擇edit conficts,解決后點擊編輯頁面的 mark as resolved-> commit&push
-> stash save(把自己的代碼隱藏存起來) -> 重新pull -> stash pop(把存起來的隱藏的代碼取回來 ) -> 代碼文件會顯示沖突 -> 右鍵選擇resolve conflict -> 打開文件解決沖突 ->commit&push