1.git log 查看commit id,修改前為id1,修改后id2
2.根據id1到id2有幾次提交來生成幾個patch,否則的話會根據所有節點生成很多patch
比如:
commit id2
commit idx
commit id1
那么執行:git format-patch -2 id1 id2 會按照順序生成兩個patch,比如下:
0001-add-build-scripts.patch
0002-add-test-build-scripts.patch
3.先回退到id1 : git reset --hard id1
4.打patch時檢查patch:
先檢查patch文件:git apply --stat patchname.patch
檢查能否應用成功:git apply --check patchname.patch (如果打不上,在這一步會報錯,報錯顯示和git am patch是一樣的,如果patch有順序的話,檢查第一個就可以)
5.打patch :git am patchname.patch
打patch時嚴格按照patch的順序一個一個打
6.patch失敗的話,采用 patch -pn < patchname.patch
pn表示跳過多少級目錄,如果patch在當前目錄下,直接用patch -pn < patchname.patch ,如果patch在上層目錄下,則patch -p1 < ../patchname.patch
7.git diff 也可以打patch,使用:
git diff commit_id1 commit_id2 > test.patch
打補丁: git apply test.patch
備注,如果打補丁失敗,要先把新增的文件刪掉。
如果沒有commitid,只是修改了文件,可以用git diff 后接改動文件來生成patch,如下:
(1)git diff test.java > test.patch # 生成補丁
然后切換到指定路徑下,檢查一下這個補丁,並把這個補丁打上。
(2)git apply --check test.patch #測試補丁能否成功
(3)git apply test.patch # 打補丁