Git变基时如何合并提交至最后一次提交并保留其日期
解决Git合并提交时保留最后一次提交日期的问题
这问题我太熟悉了!你想要把多次临时提交合并到最后一次提交里,同时保留最后那次的提交日期,其实只要调整交互式变基里的操作逻辑就行,不用额外折腾日期设置。
具体步骤如下:
- 首先还是执行你熟悉的命令,进入交互式变基界面:
git rebase -i HEAD~5 - 重点来了!这个界面里的提交是按时间从早到晚排序的——最早的提交在最顶部,你要保留的最后一次提交在最底部。
- 你需要把前4次(也就是那些无需单独保留的快速提交)的指令从
pick改成squash(或者简写s); - 一定要让最后一次提交保持
pick不动,它就是你最终要保留的那个基准提交。 - 修改后的界面大概是这样:
squash abc123 第一次临时提交 squash def456 第二次临时提交 squash ghi789 第三次临时提交 squash jkl012 第四次临时提交 pick mno345 最后一次提交(要保留日期的那次)
- 你需要把前4次(也就是那些无需单独保留的快速提交)的指令从
- 保存并退出编辑器后,Git会自动把前4次提交的内容合并到最后一次
pick的提交中,而且最终提交的日期会直接沿用最后那次提交的日期,完全符合你的需求!
额外小提示
如果之后你不小心搞反了操作,或者需要手动调整提交日期到最后一次的时间,也可以用这条命令(不过上面的方法已经足够,一般用不到):
git commit --amend --no-edit --date="$(git log -1 --format=%cd)"
另外要注意:变基前确保本地没有未提交的修改,而且因为你是第一次推这个分支,变基后直接git push就好,不用加-f(如果分支已经推过远程,强行变基推送会影响协作,不过你的场景没问题)。
内容的提问来源于stack exchange,提问作者user7692855
相关产品推荐
相关产品推荐

