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

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

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


当前回答

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

这很简单:

选项1。git show commitID>myFile.patch

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

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

其他回答

Try:

git format-patch -1 <sha>

or

git format-patch -1 HEAD

根据上面的文档链接,-1标志告诉Git补丁中应该包含多少提交;

-<n>    从最顶层提交准备补丁。


使用以下命令应用修补程序:

git am < file.patch

或者,您也可以应用(应适用于包括Windows在内的所有操作系统):

git apply --verbose file.patch

-v或--verbose将显示失败的内容(如果有的话)。告诉你如何修复。

假设您在提交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哈希的最顶层<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

要从特定提交(而不是最后一次提交)生成修补程序,请执行以下操作:

git format-patch -M -C COMMIT_VALUE~1..COMMIT_VALUE