git格式补丁限制?

时间:2010-09-28 09:28:39

标签: git

我试图在我的回购中挑选一些提交,但它一直在失败 (我在SO上尝试了这个教程:“What is the best way to git patch a subrange of a branch?”)

所以我做了一个解决方法:

  • 只需提交git format-patch提交
  • 并删除额外的文件。

真的很脏,但更容易做。
所以我做了一个

git format-patch -66

(我正在寻找的提交是66次提交)

问题是它一直停在047 是什么赋予了? 我可以生成的补丁是否有限制?

1 个答案:

答案 0 :(得分:3)

git format-patch -<n>选项有点棘手,如this thread illustrates,来自git贡献者(对于gitweb)和SO用户Jakub Narębski

  

git-format-patch的工作方式似乎存在概念性错误,即“-<n>”传递给rev-list / log生成机器,和它限制了提交的数量;

     

如果其中一些提交是合并提交(无法表示为修补程序),则它生成的修补程序数量少于指定的<n> (如您所见)   我提供的示例,其中<n> == 3,git-format-patch生成2个补丁,而不是3)。

     

在极端情况下(如'pu'),它不能生成补丁。

pu在这里public branch of the git-scm repo。)

在OP的案例中,正如他在评论中指出的那样,它可能意味着19个提交是合并补丁。


Jakub继续提出以下解决方案:

  

更新git-format-patch文档说“提交”而不是“补丁”,
  也许还会大声提醒我们正在跳过,所以我的例子看起来就像是像这样:

 $ git format-patch -3
 0001-gitweb-Prepare-for-splitting-gitweb.txt
 0002-gitweb-Create-Gitweb-Git-module.txt
 Skipping merge commit: Merge branch 'maint'

Ramkumar Ramachandra proposes last August (2010) to write a patch

您可以在此September 2010 what's cooking in git.git

中看到补丁酝酿
  

[新主题]

     

rr/format-patch-count-without-merges(2010-08-28)2提交
    - format-patch:不要过去合并提交
    - t4014-format-patch:在提交之前调用test_tick

并且仍然位于[Cooking]部分中的最新what's cooking (Sept. 27th),其中包含以下注释:

  

潜在用户的评论?