Mercurial 处理以前签入时意外忽略的文件的最佳方法?
处理这种情况的最佳方法是什么“哎呀,我忘了在上次签入时包含几个文件”?而不是用一个附加的签入,注释“哎呀,忘了这些文件” 如果错误的提交已经被推送或拉取到任何地方,则不应使用这些选项;它们会重写历史记录,并且在发布重写的提交时会导致问题。 这两种解决方案都假设您没有进行任何干预提交 根据您运行的Mercurial版本是否足够新:Mercurial 处理以前签入时意外忽略的文件的最佳方法?,mercurial,Mercurial,处理这种情况的最佳方法是什么“哎呀,我忘了在上次签入时包含几个文件”?而不是用一个附加的签入,注释“哎呀,忘了这些文件” 如果错误的提交已经被推送或拉取到任何地方,则不应使用这些选项;它们会重写历史记录,并且在发布重写的提交时会导致问题。 这两种解决方案都假设您没有进行任何干预提交 根据您运行的Mercurial版本是否足够新: hg add <missing files> hg commit --amend 如果使用mercurial 2.2或更高版本,您可能应该使用amend标
hg add <missing files>
hg commit --amend
如果使用mercurial 2.2或更高版本,您可能应该使用amend标志
hg commit--amend
。从帮助中:
--amend标志可用于使用新的提交来修改工作目录的父目录,该提交包含除hg status当前报告的更改之外的父目录中的更改(如果有)。旧提交存储在.hg/strip backup中的备份包中(有关如何恢复它,请参阅hg help bundle和hg help unbundle)
否则,您可以使用回滚(不建议使用,因为您正在重写历史记录)hg rollback
:
hg rollback
hg add <missing files>
hg commit
应小心使用此命令。回滚只有一个级别,无法撤消回滚。它还将在最后一次事务时恢复dirstate,并丢失自那时以来的任何dirstate更改。此命令不会更改工作目录
或者使用hg backout
:
在当前工作目录中准备一个具有REV undone效果的新变更集。
如果REV是工作目录的父目录,那么这个新变更集将自动提交。否则,hg需要合并更改,合并的结果将保持未提交状态