【发布时间】:2012-05-05 13:06:27
【问题描述】:
我在磁盘上有一个假设的 Mercurial 存储库。当我意识到我已经把我正在处理的文件弄得一团糟时,我大部分时间都在创建一个新功能,并且想要将该文件恢复到其上次提交状态。
我可以使用hg update 从存储库中刷新工作副本,但这会更新每个文件。
是否有可以只更新单个文件的 mercurial 命令?
【问题讨论】:
我在磁盘上有一个假设的 Mercurial 存储库。当我意识到我已经把我正在处理的文件弄得一团糟时,我大部分时间都在创建一个新功能,并且想要将该文件恢复到其上次提交状态。
我可以使用hg update 从存储库中刷新工作副本,但这会更新每个文件。
是否有可以只更新单个文件的 mercurial 命令?
【问题讨论】:
有一个 mercurial 命令可以恢复文件。 hg revert 这应该会恢复任何更改。你也可以给它传递一个文件名,例如hg revert fileName。
【讨论】:
hg revert fileName 会将该文件恢复为您所在的版本。
如果您想恢复所有更改,您可以运行hg revert --all。
这两个都将生成 fileName.orig 文件,因此您可以保留要还原的更改以防万一。如果您想恢复文件并且没有所有 .orig 文件,您可以添加 -C 选项:
hg revert fileName -C
hg revert --all -C
【讨论】:
*.orig 添加到我的.hgignore 文件中,然后留下.orig 文件。也许有一天我会需要它们 :) 如果它们打扰到你,那么你可以使用 purge 扩展来清理它们。
我相信你可以输入hg revert /path/to/file/<file name>,它只会更新那个文件。
【讨论】:
git checkout 有这种奇怪的行为(在 Mercurial 中,hg checkout 是 hg update 的别名)。