我想从git存储库中提取所有补丁, 或至少来自所选标签或提交的所有祖先。
我需要将每个提交作为单独的补丁。每个补丁应该最终成为自己的文件。该命令可以创建目录或tar存档。
我能找到的最近的是git-format-patch
,但它会将所有内容输出为单个补丁。
答案 0 :(得分:0)
您可以使用git-format-patch
:
git format-patch -o patches --root HEAD
它会将补丁写入patches
目录。当然,您可以使用特定提交或某些标记替换HEAD
。
答案 1 :(得分:0)
警告:使用git format-patch -o path/to/folder
,尚未创建中间目录path/to
,...表示命令将失败。
“ git format-patch -o <outdir>
”相当于“ mkdir <outdir>
”,而不是“ mkdir -p <outdir>
”,已通过Git 2.24(2019年第四季度)进行了更正。
请参见commit edefc31的Bert Wesarg (bertwesarg
)(2019年10月11日)。
(由Junio C Hamano -- gitster
--在commit f1afbb0中合并,2019年10月18日)
format-patch
:创建输出目录的主要组件签名人:Bert Wesarg
'
git format-patch -o <outdir>
'等效于'mkdir <outdir>
',而不是'mkdir -p <outdir>
'。避免在前导目录中使用“
adjust_shared_perm
”,这可能会带来安全隐患。
通过像'config.sharedRepository
'一样暂时禁用'git init
'来实现。
并且(仍然使用Git 2.24,2019年第四季度):
请参见commit 19c29e5的Bert Wesarg (bertwesarg
)(2019年10月21日)。
(由Junio C Hamano -- gitster
--在commit c555caa中合并,2019年10月24日)
t4014
:使输出目录测试自包含签名人:Bert Wesarg
As noted by Gábor,edefc31873中的新测试(“
format-patch
:创建输出目录的主要组件”,2019-10-11,Git v2.24.0-rc0-{{ merge中列出的3}}不能独立运行。
解决这个问题。