如何从git存储库中提取提交补丁

时间:2016-09-27 12:21:10

标签: git

我想从git存储库中提取所有补丁, 或至少来自所选标签或提交的所有祖先。

我需要将每个提交作为单独的补丁。每个补丁应该最终成为自己的文件。该命令可以创建目录或tar存档。

我能找到的最近的是git-format-patch,但它会将所有内容输出为单个补丁。

2 个答案:

答案 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 edefc31Bert 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 19c29e5Bert Wesarg (bertwesarg)(2019年10月21日)。
(由Junio C Hamano -- gitster --commit c555caa中合并,2019年10月24日)

  

t4014:使输出目录测试自包含

     

签名人:Bert Wesarg

     

As noted by Gáboredefc31873中的新测试(“ format-patch:创建输出目录的主要组件”,2019-10-11,Git v2.24.0-rc0-{{ merge中列出的3}}不能独立运行。
  解决这个问题。