git 打補丁方法 patch diff


(14條消息) (四十) git 打補丁方法總結_JT的專欄-CSDN博客_git 打補丁

git am 0001-Added-the-custom-font-manager.patch --whitespace=nowarn/fix

 

 

1. 應用場景
有兩個git庫(同一個git庫不同分支可以用cherry-pick),兩個git庫代碼是相關聯的,要有選擇的定期將其中一個git庫的修改merge到另外一個庫中。

 

 

2.方法
准備工作:初始化兩個git倉庫,創建一個original.txt文件,內部寫有“This is original text”,然后復制到第一個倉庫和第二個倉庫。修改第一個倉庫中的original.txt文件,添加一行“This is modify”,修改分別提交。

 

 

2.1 git diff + git apply
生成patch

 

git diff 前一個提交 目標提交 > 1.patch

 

 

 

 

應用patch

git apply 1.patch

 

可以看到patch已經打上去了,但是修改信息啥的還得自己來寫一下,不是很完美。

 

2.2 git format-patch+ git am 單個patch
1. 使用git format-patch生成補丁

(git format-patch -1 commitid是提取單個commitid對應的patch)

2.使用git am 應用補丁

(一般建議git am應用補丁前使用git am --abort)

 

可以發現這種打補丁方式會將提交信息直接都打進去,非常方便。

 

 

2.3 git format-patch+ git am 多個patch
1.生成多個patch(git format-patch commitid會生成這個commit之后的所有patch,不包含該commit)

 

2. 打補丁(git am *.patch可以打進去所有patch)

 

有沖突的話解決沖突,然后git add對應文件,git am --resolve。不能解決想后面再說就git am --skip,具體使用方法參考git am --help

 

 

PS:

1 使用git format-patch生成所需要的patch:

當前分支所有超前master的提交:
git format-patch -M master
某次提交以后的所有patch:
git format-patch 4e16 --4e16指的是commit名
從根到指定提交的所有patch:
git format-patch --root 4e16
某兩次提交之間的所有patch:
git format-patch 365a..4e16 --365a和4e16分別對應兩次提交的名稱
某次提交(含)之前的幾次提交:
git format-patch –n 07fe --n指patch數,07fe對應提交的名稱
故,單次提交即為:
git format-patch -1 07fe
git format-patch生成的補丁文件默認從1開始順序編號,並使用對應提交信息中的第一行作為文件名。如果使用了-- numbered-files選項,則文件名只有編號,不包含提交信息;如果指定了--stdout選項,可指定輸出位置,如當所有patch輸出到一個文件;可指定-o <dir>指定patch的存放目錄;


2應用patch:
先檢查patch文件:git apply --stat newpatch.patch
檢查能否應用成功:git apply --check newpatch.patch
打補丁:git am newpatch.patch
————————————————
版權聲明:本文為CSDN博主「i加加」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/sinat_20059415/article/details/80598347


免責聲明!

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



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