1. 程式人生 > 其它 >git pull時,提示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 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