0

处理这种情况的最佳方法是什么?“哎呀,我忘记在上次签到时包含几个文件”。. . ? 而不是用评论“糟糕,忘记这些文件”来跟进它。. . ?

4

2 回答 2

2

如果错误的提交已经被推送或拉到任何地方,则不应使用这些;他们重写历史并且在发布重写的提交时会引起问题。

这两种解决方案都假设您没有进行任何干预提交。

取决于您是否正在运行足够新的 Mercurial 版本:

hg add <missing files>
hg commit --amend

我不确定它是在哪个版本中引入的,顺便说一句。

替代amend方案是rollback

hg rollback
hg add <missing files>
hg commit
于 2013-03-22T16:11:35.693 回答
0

如果使用 mercurial 2.2 或更高版本,您可能应该使用 amend 标志hg commit --amend。从帮助:

--amend 标志可用于使用新提交修改工作目录的父级,该提交包含父级中的更改,以及当前由 hg status 报告的更改(如果有的话)。旧的提交存储在 .hg/strip-backup 的备份包中(参见 hg help bundle 和 hg help unbundle 了解如何恢复它)。

否则,您可以使用回滚(不推荐,因为您正在重写历史记录)hg rollback

应谨慎使用此命令。只有一级回滚,没有办法撤消回滚。它还将恢复上次事务时的 dirstate,丢失自那时以来的任何 dirstate 更改。此命令不会更改工作目录。

或使用hg backout

在当前工作目录中准备一个具有 REV 撤消效果的新变更集。如果 REV 是工作目录的父目录,那么这个新的变更集会自动提交。否则, hg 需要合并更改并且合并的结果未提交。

于 2013-03-23T20:02:47.527 回答