【发布时间】:2016-06-30 00:38:35
【问题描述】:
由于它便宜,我使用commit 来保存我的每日 WIP 快照。所以我的提交历史包含许多快照提交和几个混合在一起的关键提交。
在将我的工作推送到远程存储库之前,我可能想通过将正在进行的快照提交合并到直接后续的关键提交中来清理我的历史记录以仅包含关键提交。关键提交的日期信息对我很重要,因为它让我想起了我何时以及我所做的更改。
在git rebase -i 中使用 squash/fixup 命令可能会有所帮助,但它们会融合到以前的提交中,并且它们的作者日期不是我想要的。
重新排序提交然后压缩通常会导致不必要的冲突,这也是我想要避免的。
所以。满足我的愿望的最佳做法是什么?
[更新] 2016-07-03
受托雷克回答的启发,我想出了一个解决方案:像往常一样使用git rebase -i,将我希望之前的提交融合到的目标提交设置为edit,然后执行git reset HEAD~n where n是我想要融合的先前 cmets 的数量。并提交合并的更改:
% git commit --amend --date "$(grep DATE .git/rebase-merge/author-script | cut -f2 -d '=')"
之后,通过git rebase --continue完成剩下的工作。
【问题讨论】:
-
关于“每日 WIP 快照”这一短语:我(和许多其他人)建议您使用 Commit Early、Commit Often。在富有成效的工作日,我经常会有至少一打或两次提交。
-
是的,我同意该网站的说法。在我开始为团队开发工作之前,我也是这样做的。
-
请将您的更新添加为实际答案,而不是编辑到问题中。
标签: git