我正在使用Mercurial。我克隆了一个代码库。为了调试,我在一个Java文件中更改了几行代码,但我并没有提交这些更改。我只想将它们还原回代码库中最初的状态。我尝试过hg revert filename.java
,它确实将文件还原了,但是现在当我执行hg status
时,我发现我的文件夹中新增了一些文件,比如:
? filename.java.orig
我可以直接删除这些文件吗?为什么使用 revert 命令时 Mercurial 会生成这些文件?
我正在使用Mercurial。我克隆了一个代码库。为了调试,我在一个Java文件中更改了几行代码,但我并没有提交这些更改。我只想将它们还原回代码库中最初的状态。我尝试过hg revert filename.java
,它确实将文件还原了,但是现在当我执行hg status
时,我发现我的文件夹中新增了一些文件,比如:
? filename.java.orig
我可以直接删除这些文件吗?为什么使用 revert 命令时 Mercurial 会生成这些文件?
你也可以使用 --no-backup 标志,这样 .orig 文件就不会被创建。
hg revert --no-backup filename.java
从Mercurial 2.0开始,你可以使用-C标志来阻止创建.orig文件。
hg revert -C filename.java
是的,你可以删除它们。这是一个安全功能,以防你撤销了你不想撤销的事情。
正如其他人所指出的,你可以安全地删除这些文件。
你可以通过在仓库根目录执行以下命令来删除它们:
rm `hg st -un | grep orig`
如果你想回滚,并且完全不关心备份原始文件,你需要的命令是:
hg update -C
这些是您还原之前的文件副本。如果您不需要它们,可以手动删除或使用Purge扩展程序进行删除:
hg clean
hg purge
? - Martin Geislerhg clean
的时候提示说 clean
是由清除扩展提供的。 - Casebashhg purge
和 hg clean
。 - Martin Geisler这些是相当常见的,来自各种操作。我工作的一个中等大小的代码库里就有237个。我不喜欢删除可能会有用的东西,也没有理由用相同的后缀命名合法文件,所以我将以下内容添加到.hgignore中:
.\.orig$
这个批处理文件是我自己制作的。
IF "%1%" == "d" (
del /s *.orig
del /s *.rej
) ELSE (
del /s /p *.rej
del /s /p *.orig
)
帮助: 将此内容保存为orig.bat
orig d
以一次性删除所有拒绝和原始文件,无需确认orig
以带有确认的方式删除文件[安全机制]希望这对您有所帮助。
hg revert -C filename.java
。 - jbranchaud-C
是如何代表--no-backup
的……它是指勇敢的撤销吗?请给我翻译这段话。 - dreamlaxhg revert FILE && hg clean
相同的效果。 - Florian Pilz