水银:回滚的“汞承诺--amend”。

问题描述 投票:25回答:4

我不小心做了“汞承诺--amend”,而不只是提交。我怎么可以回滚承诺前的修改?

mercurial
4个回答
-3
投票

注意:这个答案现在已经过时。从@Sorina三都见the answer代替。


hg help commit,在那里说:

该--amend标志可用于修改工作目录的父与新提交包含除目前由“汞状态”报道那些在父母的变化,如果有任何。老犯存储在“.hg /条备份”备份包(参见‘汞帮助捆绑’,并就如何恢复它‘汞帮助松绑’)。


55
投票

您可以使用hg reflog(从journal extension)和hg reset <hash>

hg reflog -v

应该看到这样的信息:

<old-hash> -> <new-hash> <user> <timestamp>  commit --amend <some-path>

如果是这样的修改要恢复,只需使用:

hg reset <old-hash>

该承诺将恢复到什么是以前是并进行了修改,现在应该是未提交更改的变化(检查使用hg statushg diff)。


5
投票
  1. 查找.hg/strip-backup目录最新保存的备份
  2. hg unbundle .hg/strip-backup/<latest backup>
  3. 现在你应该有两个头 - 一个与经修订提交,另一种用两次提交(第一个 - 修正,第二个caled先老承诺:“临时修改为提交(旧提交哈希)”。
  4. 如果你有histedit扩展,你可以做hg histedit它以改变(例如,以实现国家的承诺之前,即选择edit的时候可以看到使用hg diff所有更改)。

不要忘了剥离老脸。


3
投票

如果你的Mercurial版本够新,我相信你应该能够从hg unamend分机使用uncommit命令附带水银。这可能需要报废标志的启用,我不知道。

  1. 启用uncommit扩展,添加到您的~/.hgrc[extensions] uncommit =
  2. 实际运行unamend: hg unamend
© www.soinside.com 2019 - 2024. All rights reserved.