Git rebase保留最新提交日期

Git rebase保留最新提交日期,git,Git,我一直在研究一个功能分支,它可以被推到远程。它有5个左右的提交,有些是非常快速的提交,不值得自己提交。我希望该功能在我将其推到remote进行审查之前总共提交一次 我通常会这样做: git rebase-i头~5 然后将提交折叠到上一个提交中。这将给我一个提交,因为我想但是,提交日期是第一次提交的日期。我想要一次提交,提交日期为最后一次提交 如何将提交折叠到最后一次提交而不是第一次提交?您可以在任何新提交上设置任意日期 当您将提交与rebase-i组合在一起时,实际上并不是在更改旧的提交,而是在

我一直在研究一个功能分支,它可以被推到远程。它有5个左右的提交,有些是非常快速的提交,不值得自己提交。我希望该功能在我将其推到remote进行审查之前总共提交一次

我通常会这样做:

git rebase-i头~5

然后将提交折叠到上一个提交中。这将给我一个提交,因为我想但是,提交日期是第一次提交的日期。我想要一次提交,提交日期为最后一次提交


如何将提交折叠到最后一次提交而不是第一次提交?

您可以在任何新提交上设置任意日期

当您将提交与
rebase-i
组合在一起时,实际上并不是在更改旧的提交,而是在进行一次新的提交,之后您只需停止使用旧的提交:

(before rebase -i)

A--B--C--D--E--F--G--H--I   <-- master

(after rebase -i)

           E--F--G--H--I   [abandoned]
          /
A--B--C--D--J   <-- master
如果没有其他方法可以让您找到它们,那么您放弃的提交将最终(大约30天后的某个地方)丢失查找它们的最后方法。它们的ID将保留在reflogs中一段有效期,以防您想要它们回来,一旦它们真的未被引用,垃圾收集就会通过(由
git gc--auto
运行,它又由其他各种git命令为您运行)将真正删除它们


1基于非交互式的
git-am
git-rebase
有一个标志,但没有挤压功能。

git-rebase-i SHA

重设基础后,有3个选项可用,请选择其中任何一个。选项1仅适用于最近提交。选项2和3不适用于交互式重设基础,因此需要单独的重设基础调用,否则将仅加入上述重设基础调用

  • git commit--amend--no edit--date=now
  • git rebase——忽略日期SHA
  • git rebase——提交者日期——是作者日期
  • 在您的场景中,您可以通过选项1找到重新基准之前的最新提交日期,并在重新基准之后提供该日期。如果您不知道要使用的日期格式,请尝试echo$(日期)


    (由此可知,)

    我可以想象他们为什么这么做。对于fixup提交,原始数据是正确的,您肯定希望保留原始作者。对于squashes,您希望保留的内容不太清楚。复杂的行为,如如果超过30%的代码来自第二次提交,则选择新日期,等等,不值得努力实现。
               E--F--G--H--I   [abandoned]
              /
    A--B--C--D--K   <-- master
              \
               J   [abandoned]