【问题标题】:Undoing last addremove in Mercurial?撤消 Mercurial 中的最后一个添加删除?
【发布时间】:2011-09-05 05:13:35
【问题描述】:

我输入了

$ hg addremove

但后来意识到某些文件不应该是提交的一部分。我应该做的是将这些文件添加到 .hgignore 中,然后运行 ​​addremove 并提交。

有没有办法解决这个问题?

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    如果您还没有提交,只需使用hg forget fileToForget 或使用 Tortoise 删除文件。

    如果您已提交并且不介意文件成为历史的一部分,只需忘记它们并再次提交即可。

    如果您不希望它们成为存储库历史记录的一部分,并且如果提交它们是您所做的最后一次操作,您可以尝试回滚(使用 hg rollback 或进入 Tortoise 的恢复菜单)。您将不得不忘记该文件,然后再次提交

    如果您处理的文件太多,您可以尝试通过获取所有已添加文件的列表来自动执行任务,忘记它们,修改您.hgignore 并再次执行addremove

    powershell 中没有提交的第一步示例

    hg status --added --no-status | foreach-object {hg forget $_};
    

    【讨论】:

    • 对于 linux 类型 hg status --added --no-status | xargs hg forget.
    • 从另一个对我有用的答案hg forget "set:added()" 试试这个。
    • @DanielSokolowski 如果文件名中有空格,这将不起作用 - 请改用 hg status --added --no-status | xargs -d '\n' hg forget
    【解决方案2】:

    要撤消您尚未提交的 addremove,只需运行:

    $ hg revert --all
    

    【讨论】:

    • 假设除了addremove的影响之外没有其他变化。
    • 你是对的 - 我认为 'addremove' 是你想要撤消的唯一命令。
    • @Alex 正如@Edward 提到的那样,这可能很危险。使用此命令的人将丢失所有工作区更改。 hg forget 是这样做的正确方法。请查看@CedricRup 的答案
    猜你喜欢
    • 1970-01-01
    • 2013-03-18
    • 2015-12-04
    • 1970-01-01
    • 2015-05-11
    • 2011-03-10
    • 2012-08-21
    • 2018-12-14
    相关资源
    最近更新 更多