1. 程式人生 > >git patch 衝突解決

git patch 衝突解決

1 git patch生成方法

git format-patch commit-id

commit-id 該次提交之後的所有patch,不包含commit-id這次提交

git format-patch commit-id1..commit_id2

commit-id1和commit-id2這兩次提交之間的所有patch

git format-patch -M master

當前分支所有超前master的提交

git format-patch -n commit-id

某次提交(含)之前的幾次提交,n指提交數,所有某次提交的patch命令為:git format-patch -1 commit-id


git format-patch命令生成的補丁檔案預設從0001開始編號,使用提交資訊中的第一行作為檔名稱;

如果加上引數--numbered-files,則輸出的補丁檔名稱只有數字;

如果加上引數-o dir, 則制定了補丁檔案的儲存路徑


2 應用patch檔案

檢查patch檔案:git apply --stat xxx.patch

檢查patch檔案能否應用成功:git apply --check xxx.patch

打patch:git am xxx.patch


3 應用patch時出現衝突

應用patch有時會出現錯誤:

...

error:xxx does not apply

...

此時檢視上述的錯誤資訊得不到任何有關衝突的提示,可以使用下面的方法解決這個問題:

git apply --reject xxx.patch

這樣可以先把沒有衝突的檔案進行合併,同時有衝突的檔案會做出標記(會產生xxx.rej檔案,xxx為檔名稱),檢視產生的rej檔案即可得知產生衝突的程式碼片段,對產生衝突的檔案進行修改,完成後可以刪除rej檔案,接著執行

git add 衝突檔案

git add 其它無衝突檔案

最後執行:

git am --resolved

便大功告成


參考文章:

https://blog.csdn.net/liuhaomatou/article/details/54410361

http://www.fwolf.com/blog/post/448