这是命令的备忘单:
hg update
更改您的工作副本父修订并更改文件内容以匹配此新父修订。这意味着新的提交将从您更新到的修订版继续进行。
hg revert
仅更改文件内容并单独保留工作副本父修订。hg revert
当您决定不想在工作副本中保留对文件所做的未提交更改时,通常会使用此选项。
hg branch
启动一个新的命名分支。将命名分支视为您分配给变更集的标签。因此,如果您这样做hg branch red
,那么以下变更集将被标记为属于“红色”分支。这可能是组织变更集的好方法,尤其是当不同的人在不同的分支上工作并且您稍后想查看变更集的来源时。但是你不想在你的情况下使用它。
如果你使用hg update --rev 38
,那么变更集 39-45 将成为死胡同——我们称之为悬垂的头部。推送时会收到警告,因为您将在推送到的存储库中创建“多个头”。警告就在那里,因为留下这样的头脑有点不礼貌,因为他们建议有人需要进行合并。但在你的情况下,你可以继续,hg push --force
因为你真的想让它挂起。
如果您尚未将修订版 39-45 推送到其他地方,那么您可以将它们保密。这非常简单:hg clone --rev 38 foo foo-38
您将获得一个新的本地克隆,该克隆最多仅包含修订版 38。您可以继续工作foo-38
并推送您创建的新(好的)变更集。您的foo
克隆中仍然会有旧的(坏的)修订。(您可以随意重命名克隆,例如foo
tofoo-bad
和foo-38
to foo
。)
最后,你也可以使用hg revert --all --rev 38
然后提交。这将创建一个看起来与修订版 38 相同的修订版 46。然后您将从修订版 46 继续工作。这不会以与之前相同的显式方式在历史记录中创建分叉hg update
,但另一方面,您不会抱怨有多个头。hg revert
如果我与已经根据修订版 45 制作了自己的作品的其他人合作,我会使用。否则,hg update
更明确。