我有一个git repo,我们在测试环境中应用了很多补丁.
git apply --stat --check --ignore-whitespace /home/kent/Desktop/patches/test.patch --exclude .gitignore git am -s --ignore-whitespace /home/kent/Desktop/patches/test.patch --exclude .gitignore --exclude .gitignore
如果我必须删除补丁并应用新补丁,目前我克隆实时内容并重新应用所有测试补丁并再次推送.这个过程有点麻烦,有时也会导致错误我也会错过一两个补丁.
我想知道是否有办法删除补丁并应用新补丁
另外,如果我们每次都提交补丁然后我可以使用,那么添加一种方法就是:
git revert <>
以上对我来说并不适用.
您可以使用以下命令恢复修补程序:
$ git apply -R
您可以通过以下方式之一生成修补程序:
这将从差异生成补丁
$ git diff --patch > 0001-some-modifications.patch
如果要为HEAD提交生成补丁:
$ git show --patch HEAD^ > 0001-some-modifications.patch
您可以从HEAD 生成前3次提交的补丁:
$ git show --patch HEAD~3 > 0001-some-modifications.patch
您可以通过以下方式应用补丁:
$ git apply -- 0001-some-modifications.patch
您可以使用以下命令恢复修补程序:
$ git apply -R
当你生成一个补丁时,它只是一个带有元数据的差异; 文件,行号添加/删除; 以下内容:
commit 9dad147cbf16befecdef2e812c1249499bdef5ac Author: My NameDate: Mon Dec 21 20:46:01 2015 +0000 Example commit message. diff --git a/src/example.md b/src/example.md new file mode 100644 index 0000000..ab73512 --- /dev/null +++ b/src/example.md @@ -0,0 +1,3 @@ +# Example document + + Hello World
因此,当您使用时,您git apply
实际上是根据树应用编辑.
当你运行git apply -R
git时,只需执行与补丁相反的操作.