git pull時沖突的幾種解決方式


一.忽略本地修改,強制拉取遠程到本地

主要是項目中的文檔目錄,看的時候可能多了些標注,現在遠程文檔更新,本地的版本已無用,可以強拉

git fetch --all

git reset --hard origin/dev

git pull

關於commit和pull的先后順序,commit——》pull——》push 和 pull——》commit——》push的順序,兩種情況都遇到過代碼沖突。解決方法如下:

二.未commit先pull,視本地修改量選擇revert或stash

// 場景
同事 有新提交
我 沒有pull -> 修改了文件 -> pull -> 提示有沖突

1.本地修改量小

-> revert(把自己的代碼取消) -> 重新pull -> 在最新代碼上修改 -> [pull確認最新] -> commit&push

2.本地修改量大,沖突較多

有兩種方式處理

-> stash save(把自己的代碼隱藏存起來) -> 重新pull -> stash pop(把存起來的隱藏的代碼取回來 ) -> 代碼文件會顯示沖突 -> 右鍵選擇edit conficts,解決后點擊編輯頁面的 mark as resolved->  commit&push
-> stash save(把自己的代碼隱藏存起來) -> 重新pull -> stash pop(把存起來的隱藏的代碼取回來 ) -> 代碼文件會顯示沖突 -> 右鍵選擇resolve conflict -> 打開文件解決沖突 ->commit&push

另外,由於我是通過IDEA來操作git的,所以顯示沖突時,我是在圖形化界面操作的示意如下:

我們選擇項目右鍵--Git--Repository--Stash Changes

在Message中隨便取個名字,然后點擊Create Stash。

以上幾步的操作,其實就是把你在本地做的改變,通過stash先在git棧中保存起來(因為你沒有commit嘛,對比先commit再pull,你會發現 先commit再pull會比較方便,(commit操作就是類似於把改變先存起來吧。。個人理解、、))。

stash完后你會發現你本地進行的一些修改都已經不存在了,README文件也回到了之前的樣子

這樣我們就可以和遠程倉庫合並了,(我們已經把沖突先去掉了)。git pull 順利成功。

現在我們再把之前保存的更改取出來

選擇項目右鍵--Git--Repository--UnStash Changes

選擇剛剛我們命名的那個更改記錄,我這里就是第一個。

然后我們點Apply Stash,來到如下窗口,提示有代碼沖突

Accept Yours 就是直接選取本地的代碼,覆蓋掉遠程倉庫的

Accept Theirs 是直接選取遠程倉庫的,覆蓋掉自己本地的

我們選擇Merge,自己手動行進選擇、修改。

這里左邊部分是你本地倉庫的代碼,右邊部分是遠程倉庫的代碼,中間的result就是你修改之后的結果。左下角的Accept Left 和

Accept Right其實就相當於是之前的 Accept Yours 和 Accept Theirs 右下角的Apply是確認合並,Abort是取消合並。

我們在result中修改好自己想要merge的代碼,然后點擊Apply。

點yes.

這樣我們就解決了沖突,解決完沖突后記得要再commit一次,分別更新本地和遠程倉庫的代碼,這里我們可以選擇commit and push

點擊push

可以看到已經push成功了,此時我們再查看下遠程倉庫的README.md和本地倉庫的README.md

三.已commit未pull,視本地修改量選擇reset或直接merge

// 場景
同事 有新提交
我 沒有pull -> 修改了文件 -> commit -> pull -> 提示有沖突

1.修改量小,直接回退到未提交的版本(可選擇是否保存本地修改)

如果本地修改量小,例如只修改了一行,可以按照以下流程

-> reset(回退到未修改之前,選hard模式,把自己的更改取消) -> 重新pull -> 在最新代碼上修改 -> [pull確認最新] -> commit&push

ps:實際上完全可以采取直接merge的方法,這里主要是根據盡量避免merge的原則,提供一種思路

2.修改量大,直接merge,再提交(目前常用)

-> commit后pull顯示沖突 -> 手動merge解決沖突 -> 重新commit -> push

Accept Yours 就是直接選取本地的代碼,覆蓋掉遠程倉庫的

Accept Theirs 是直接選取遠程倉庫的,覆蓋掉自己本地的

我們選擇Merge,自己手動行進選擇、修改。

這里左邊部分是你本地倉庫的代碼,右邊部分是遠程倉庫的代碼,中間的result就是你修改之后的結果。左下角的Accept Left 和

Accept Right其實就相當於是之前的 Accept Yours 和 Accept Theirs 右下角的Apply是確認合並,Abort是取消合並。

我們在result中修改好自己想要merge的代碼,然后點擊Apply。

點yes.

這樣我們就解決了沖突,解決完沖突后記得要再commit一次,分別更新本地和遠程倉庫的代碼,這里我們可以選擇commit and push

點擊push

可以看到已經push成功了,此時我們再查看下遠程倉庫的README.md和本地倉庫的README.md

站在巨人肩膀上摘蘋果

https://www.cnblogs.com/zjfjava/p/10280247.html

https://www.cnblogs.com/JonaLin/p/11388955.html


免責聲明!

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



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