我需要编写一个脚本,为SHA-1提交号列表创建补丁。
我尝试使用git格式补丁<SHA1>,但从SHA-1值开始,每次提交都会生成一个补丁。在生成了几百个补丁之后,我不得不终止这个过程。
是否有方法只为特定的SHA-1值生成补丁?
我需要编写一个脚本,为SHA-1提交号列表创建补丁。
我尝试使用git格式补丁<SHA1>,但从SHA-1值开始,每次提交都会生成一个补丁。在生成了几百个补丁之后,我不得不终止这个过程。
是否有方法只为特定的SHA-1值生成补丁?
当前回答
要从特定SHA-1哈希的最顶层<n>提交生成补丁,请执行以下操作:
git format-patch -<n> <SHA-1> --stdout > <name_of_patch_file>.patch
一个补丁文件中的最后10个补丁:
git format-patch -10 HEAD --stdout > 0001-last-10-commits.patch
其他回答
该命令(如@Naftuli Tzvi Kay所建议的),
git format-patch -1 HEAD
用特定的哈希或范围替换HEAD。
将生成最新提交的补丁文件,格式与Unix邮箱格式相似。
-<n> -从最上面的<n>提交准备修补程序。
然后,您可以通过以下方式以邮箱格式重新应用修补程序文件:
git am -3k 001*.patch
参见:man git格式补丁。
git format-patch commit_Id~1..commit_Id
git apply patch-file-name
快速简单的解决方案。
要从特定SHA-1哈希的最顶层<n>提交生成补丁,请执行以下操作:
git format-patch -<n> <SHA-1> --stdout > <name_of_patch_file>.patch
一个补丁文件中的最后10个补丁:
git format-patch -10 HEAD --stdout > 0001-last-10-commits.patch
以我的Mercurial背景,我打算使用:
git log --patch -1 $ID > $file
但我正在考虑使用git格式补丁-1$ID。
使用commit id创建git补丁
$ git format-patch -1 commit-id
此命令使用以下文件名创建修补程序
0001-commit-message.patch
要应用修补程序,请执行以下操作:
$ git am 0001-commit-message.patch