这是命令的备忘单:
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
to foo-bad
和foo-38
to foo
。)
最后,您还可以使用hg revert --all --rev 38
然后提交。这将创建一个看起来与修订版38相同的修订版46。您将继续从修订版46开始工作。这不会像在历史记录中那样以相同的显式方式创建派生hg update
,但另一方面,您不会抱怨拥有多头。hg revert
如果我与已经根据修订版45进行了自己的工作的其他人进行协作,我会使用hg update
。否则,它会更加明确。