我需要编写一个脚本,为SHA-1提交号列表创建补丁。
我尝试使用git格式补丁<SHA1>,但从SHA-1值开始,每次提交都会生成一个补丁。在生成了几百个补丁之后,我不得不终止这个过程。
是否有方法只为特定的SHA-1值生成补丁?
我需要编写一个脚本,为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格式补丁。
其他回答
如果您只想区分指定的文件,可以使用:
git diff master 766eceb--connections/>000-mysql-connector.patch
要从特定提交(而不是最后一次提交)生成修补程序,请执行以下操作:
git format-patch -M -C COMMIT_VALUE~1..COMMIT_VALUE
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将显示失败的内容(如果有的话)。告诉你如何修复。
如何仅为特定SHA-1值生成补丁?
这很简单:
选项1。git show commitID>myFile.patch
选项2。gitcommitID~1..commitID>myFile.patch
注意:将commitID替换为实际的提交id(SHA-1提交代码)。
该命令(如@Naftuli Tzvi Kay所建议的),
git format-patch -1 HEAD
用特定的哈希或范围替换HEAD。
将生成最新提交的补丁文件,格式与Unix邮箱格式相似。
-<n> -从最上面的<n>提交准备修补程序。
然后,您可以通过以下方式以邮箱格式重新应用修补程序文件:
git am -3k 001*.patch
参见:man git格式补丁。