生成patch
git format-patch -1 commitid
合入patch
git am 0001-.patch
解決合入patch沖突
1. git Apply --reject 0001-.patch (強制把不沖突的文件先合并,有沖突的會生成.rej文件)
2..根據.rej這個文件中的修改去手動執行即可 ,解決完沖突要把.rej文件刪除
3.git add
4.git am --continue
Patch其他命令使用說明
1.生成patch命令拓展
生成最近的1次commit的patch
git format-patch HEAD^
生成最近的2次commit的patch
git format-patch HEAD^^
生成最近的3次commit的patch
git format-patch HEAD^^^
生成兩個commit間的修改的patch(包含兩個commit. <r1>和<r2>都是具體的commit號)
git format-patch <r1>..<r2>
生成單個commit的patch
git format-patch -1 <r1>
生成某commit以來的修改patch(不包含該commit)
git format-patch <r1>
生成從根到r1提交的所有patch
git format-patch --root <r1>
2.合入patch命令拓展
將名字為0001-.patch的patch打上
git am 0001-.patch
添加-s或者--signoff,還可以把自己的名字添加為signed off by信息,作用是注明打patch的人是誰,因為有時打patch的人并不是patch的作者
git am --signoff 0001-.patch
將路徑~/patch-set/*.patch 按照先后順序打上去
git am ~/patch-set/*.patch
當git am失敗時,用以將已經在am過程中打上的patch廢棄掉(比如有三個patch,打到第三個patch時有沖突,那么這條命令會把打上的前兩個patch丟棄掉,返回沒有打patch的狀態)
git am --abort
當git am失敗,解決完沖突后,這條命令會接著打patch
git am --resolved
查看patch的情況
git apply --stat 0001-.patch
檢查patch是否能夠打上,如果沒有任何輸出,則說明無沖突,可以打上
git apply --check 0001-.patch