我需要编写一个脚本,为SHA-1提交号列表创建补丁。

我尝试使用git格式补丁<SHA1>,但从SHA-1值开始,每次提交都会生成一个补丁。在生成了几百个补丁之后,我不得不终止这个过程。

是否有方法只为特定的SHA-1值生成补丁?


当前回答

该命令(如@Naftuli Tzvi Kay所建议的),

git format-patch -1 HEAD

用特定的哈希或范围替换HEAD。

将生成最新提交的补丁文件,格式与Unix邮箱格式相似。

-<n> -从最上面的<n>提交准备修补程序。

然后,您可以通过以下方式以邮箱格式重新应用修补程序文件:

git am -3k 001*.patch

参见:man git格式补丁。

其他回答

该命令(如@Naftuli Tzvi Kay所建议的),

git format-patch -1 HEAD

用特定的哈希或范围替换HEAD。

将生成最新提交的补丁文件,格式与Unix邮箱格式相似。

-<n> -从最上面的<n>提交准备修补程序。

然后,您可以通过以下方式以邮箱格式重新应用修补程序文件:

git am -3k 001*.patch

参见:man git格式补丁。

以我的Mercurial背景,我打算使用:

git log --patch -1 $ID > $file

但我正在考虑使用git格式补丁-1$ID。

假设您在提交1之后有提交id 2,则可以运行:

git diff 2 1 > mypatch.diff

其中2和1是SHA-1散列。

git format-patch commit_Id~1..commit_Id  
git apply patch-file-name

快速简单的解决方案。

如何仅为特定SHA-1值生成补丁?

这很简单:

选项1。git show commitID>myFile.patch

选项2。gitcommitID~1..commitID>myFile.patch

注意:将commitID替换为实际的提交id(SHA-1提交代码)。