git am patch沖突解決步驟


在踩過幾次坑之后,大多數工程師都會學會使用patch的形式來保存各個模塊/功能的代碼改動,這樣可以很方便地為相應模塊添加或者去除相關功能的代碼。但是伴隨着主線代碼的不斷更新,我們在早期保存出來的patch中有部分內容可能已經不能再直接打入現在的代碼里了。這種情況下可以使用下面的方法解決沖突:

1、執行命令 git am xxxx.patch 嘗試直接打入補丁。因為我們使用的 patch 已經過時了,所以這一步肯定會報錯並中斷(注意,雖然命令停止執行了,但我們依然處於git am命令的運行環境中,可以通過git status命令查看到當前的狀態)。

2、執行命令 git apply --reject xxxx.patch 自動合入 patch 中不沖突的代碼改動,同時保留沖突的部分。這些存在沖突的改動內容會被單獨存儲到目標源文件的相應目錄下,以后綴為 .rej 的文件進行保存。比如對 ./test/someDeviceDriver.c 文件中的某些行合入代碼改動失敗,則會將這些發生沖突的行數及內容都保存在 ./test/someDeviceDriver.c.rej 文件中。我們可以在執行 git am 命令的目錄下執行 find -name *.rej 命令以查看所有存在沖突的源文件位置。

3、依據 步驟2 中生成的 *.rej 文件內容逐個手動解決沖突,然后刪除這些 *.rej 文件。完成這一步驟的操作后,我們就可以繼續執行 git am 的過程了。

4、執行命令 git status 查看當前改動過的以及新增的文件,確保沒有多添加或少添加文件。

5、執行命令 git add . 將所有改動都添加到暫存區(注意,關鍵字add后有一個小數點 . 作為參數,表示當前路徑)。

6、執行命令 git am --resolved 繼續 步驟1 中被中斷的 patch 合入操作。合入完成后,會有提示信息輸出。

7、執行命令 git log 確認合入狀態。


至此,帶有沖突代碼的 patch 合入就操作完成了。如果要修改 commit 信息,執行 git commit --amend 命令即可。

 

參考:https://blog.csdn.net/chaihuasong/article/details/50517519


免責聲明!

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



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