我可以在不触及工作目录的情况下导入补丁吗?

9
通常情况下,当我尝试导入一个补丁时,如果我的工作副本不干净,Mercurial会中止操作:
$ hg import x.patch
abort: outstanding uncommitted changes

有没有办法无论如何都导入它?

对于那些想知道刚刚发生了什么的人... :-) 我在邮件列表上回答了同样的问题,并且想尝试在这里“导入”问题和答案。与邮件列表相比,我们可以在这里重新表述问题和答案,以便我们有一个清晰的问题和一个明确的答案。这可能会节省我们后来的问题。当然,“重新发布”这样的东西是双倍的工作,我真的不知道它是否值得。 - Martin Geisler
我认为这是一个好主意。我已经遇到过这个问题,而且我认为其他人也会遇到同样的问题,因为SO在搜索引擎上有很好的参考价值,答案将尽可能地为更多的人提供! - krtek
@krtek:感谢您的评论- 写下并回答这样的问题感觉有点奇怪 :-) - Martin Geisler
1
不需要解释——“提出并回答自己的问题不仅可以,而且明确鼓励这样做。” http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/(通过[常见问题解答](http://stackoverflow.com/faq#questions)) - Laurens Holst
@LaurensHolst 是的,我知道这在常见问题解答中有提到,但我几乎从未见过它被实现,所以感觉有点奇怪 :) 基于积极的反馈,我将尝试在未来更多地使用它。 - Martin Geisler
2个回答

10

在Mercurial 1.9中,你可以使用hg import --bypass命令来应用补丁而不会影响当前的工作副本。默认情况下,该补丁将被应用于当前工作副本的父级修订版本上。如果要应用补丁到与补丁头部所提到的更改集相对应的位置上,则需要使用--exact标志。


1
如果您正在使用TortoiseHg,您可以使用“Repository > Import”命令,然后指定应将补丁导入到“Shelf”,最后在Shelf中将更改移动到脏工作库,就像处理其他已存储的补丁一样。
我希望能够在源代码库中右键单击“复制补丁”,然后在克隆的代码库中右键单击“粘贴补丁”。希望这个功能能在未来的版本中实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接