Git interactive rebase(修复)在组合提交时保留原始日期/时间戳

Git interactive rebase(修复)在组合提交时保留原始日期/时间戳,git,rebase,Git,Rebase,我想通过git rebase清理git回购(github托管),并使用“fixup”选项将类似的提交合并到单个提交中。 我的回购协议可以追溯到3年前,所以我想我可以分步进行。 例如,我最近的5次提交都可以,但第6次到第10次提交需要合并为一次提交。所以我这样做: git rebase -i @~10 这将按相反的顺序列出它们,第10次提交是我想要选择的。 接下来的4次提交都是“修复”。 其余5个被设置为“拾取” 当我完成时,我运行: git push origin +master 问题在于,

我想通过git rebase清理git回购(github托管),并使用“fixup”选项将类似的提交合并到单个提交中。
我的回购协议可以追溯到3年前,所以我想我可以分步进行。
例如,我最近的5次提交都可以,但第6次到第10次提交需要合并为一次提交。所以我这样做:

git rebase -i @~10
这将按相反的顺序列出它们,第10次提交是我想要选择的。
接下来的4次提交都是“修复”。
其余5个被设置为“拾取”

当我完成时,我运行:

git push origin +master
问题在于,尽管提交是组合的,但github的代码视图中显示的日期是今天的日期。

我想简单地将它们组合在一起,保留原始提交上的日期/时间戳。这可能吗?

一种可能的解决方法是在使用。。。但它与交互式重基不兼容

因此,您可以尝试:

  • 做你的互动重基
  • 然后,在完成重基后,要恢复提交日期,请执行以下操作:

    git filter-branch --env-filter 'GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE; export GIT_COMMITTER_DATE'
    

谢谢您的建议。我需要读一下你建议的过滤器分支。也许我们可以后退一步:有没有更简单的方法来实现我的目标,即通过我的提交历史记录,并将次要的提交合并成一个保留原始提交的日期/时间戳的提交?@RichardDragon不是真的:您可以先进行一次重新基址交互,然后对最近的提交进行第二次重新基址(未合并)和
--提交者日期是作者日期。太好了,你的建议似乎对我有用,谢谢!