如何放弃汞合并?


131

我是与Mercurial合作的新手。我的情况:

  • 另一个程序员更改了文件的修订版1,以将2位缩进替换为4位缩进。(即每行更改一次。)调用该版本2,将其推送到远程仓库。
  • 我已经对本地工作区中的各种代码进行了实质性的修订,修订版1。叫那个版本3。
  • hg pull编和hg merged没有什么事情一个清晰的思路。
  • 冲突是无数的,不是真正的冲突。

因此,我真希望在合并之前将本地存储库更改为2空格缩进。那么合并将是微不足道的(我想)。但我似乎无法备份。我认为我需要hg update -r 3但是它说abort: outstanding uncommitted merges

如何撤消合并,更改本地仓库中的间距并重新合并?

Answers:


126

您可以使用-C(或--clean)标志放弃未提交的更改:

hg update -C -r 3

注意:所有未提交的内容都将消失!

之后,您可能应该使用某种代码格式化工具来执行整个操作,或者至少使用某种查找和替换正则表达式。只需将匹配项^____(使用4个空格而不是下划线)替换为__(2个空格),然后重复几次(除非您疯狂地拥有一些嵌套代码)就可以了。


哦谢谢。当我自己弄清楚时,您肯定已经回答正确了。我在emacs中,所以M-x indent-region凹进技巧也一样。
Grumdrig'4

6
值得注意的是,未跟踪的文件将不会被删除。
djsutho

132

顺便说一句:如果您只是还原您所做的合并,而3不是您的修订号,则可以执行以下操作:

hg update -C -r .

24
对于像我这样的人,一开始并不清楚它.是如何工作的:点是上一个修订版的快捷方式。
Jeroen Wiert Pluimers 2014年

1
好答案!应该是最好的
Oleg Abrazhaev 2015年

1
@Thymine:从hg help update我得到的信息:如果未指定更改集,请更新到当前命名分支的尖端……而该尖端可能并不总是您正在使用的当前修订版。到目前为止,我还没有测试
数学

1
啊,这是一个非常详细的信息……实际上,我要删除我的评论,声称离开-r .是一样的
Thymine

简单而且非常有帮助。
Naveen Kumar V

33

要撤消未提交的合并,请使用

hg update --clean

它将签出原始合并父级的干净副本,并丢失所有更改。


2

我显然只需要这样做,就可以hg update -C -r 3用rev覆盖本地文件(这是我hg update想做的;但是我错了。)感谢您的帮助!


2
添加-C或是--clean您告诉Mercurial继续的方式,即使它会丢弃一些已修改的文件。您是对的,hg update -r X通常可以将您带到修订版X,但是在合并时,您需要坚持一点:-)
Martin Geisler 2010年

7
我认为“汞还原--all --cancelmerge”会更加直观。
沃伦·P
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.