2010-01-09 78 views
18

我是mercurial的新手。我最近与2位同事建立了一个存储库,并且在推送我的代码时遇到了困难。 [我在Windows中使用命令行hg]。特别是当我推我得到类似下面的对话:无法在mercurial中合并

>hg commit -u petermr 

>hg push 
pushing to http://bitbucket.org/petermr/polyinfo/ 
searching for changes 
abort: push creates new remote heads! 
(did you forget to merge? use push -f to force) 
>hg merge 
abort: there is nothing to merge 

>hg status 

恐怕用推-f承诺,因为我认为这会创建多个头,并导致我们组的问题。

当我尝试合并,我得到一个对话是这样的:

>hg merge -f 
merging src/test/resources/PMR/algorithm/cmlAll.xml 
output file src/test/resources/PMR/algorithm/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/irregular/cmlAll.xml 
output file src/test/resources/PMR/irregular/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/massChange/cmlAll.xml 
output file src/test/resources/PMR/massChange/cmlAll.xml appears unchanged 
was merge successful (yn)? y 

因为有几百个文件,我不能对每个输入“y”和我找不到合并它们放在一起的一种方式。

UPDATE我试图第一(2)的回答,仍然有一个问题:

>hg pull 
pulling from http://bitbucket.org/petermr/polyinfo/ 
searching for changes 
no changes found 

>hg merge 
abort: outstanding uncommitted merges 

UPDATE响应于@tonfa我不能承诺:

>hg commit 
abort: unresolved merge conflicts (see hg resolve) 

UPDATE @balpha(我已将所有者的名称更改为Foo)

>hg parent 
changeset: 24:9ec904d2d5a2 
tag:   tip 
user:  petermr 
date:  Sat Jan 09 16:40:38 2010 +0000 
summary:  trying to sync 

changeset: 22:360aedb72f0e 
parent:  21:89c4bd671bd3 
parent:  18:3cffa8ca3a2a 
user:  Foo (not me) 
date:  Fri Jan 08 16:15:50 2010 +0000 
summary:  merged 


>hg tip 
changeset: 24:9ec904d2d5a2 
tag:   tip 
user:  petermr 
date:  Sat Jan 09 16:40:38 2010 +0000 
summary:  trying to sync 

UPDATE

汞柱头

changeset: 24:9ec904d2d5a2 
tag:   tip 
user:  petermr 
date:  Sat Jan 09 16:40:38 2010 +0000 
summary:  trying to sync 

changeset: 22:360aedb72f0e 
parent:  21:89c4bd671bd3 
parent:  18:3cffa8ca3a2a 
user:  Foo (not me) 
date:  Fri Jan 08 16:15:50 2010 +0000 
summary:  merged 

UPDATE遵循以下建议谁恢复它的修改过程要求(这也是众多@balpha评论?如果是的话我怎么找到它?)

>hg revert --all 
abort: uncommitted merge - please provide a specific revision 

UPDATE仍不能合并...

>hg revert --all -r tip 
reverting .hgignore 
reverting .hgignore~ 
reverting src\test\java\org\xmlcml\cml\converters\polyinfo\RegressionTest.java 
reverting src\test\resources\PMR\algorithm\cmlAll.xml 
reverting src\test\resources\PMR\irregular\cmlAll.xml 
reverting src\test\resources\PMR\massChange\cmlAll.xml 
reverting src\test\resources\PMR\massChangeOk\cmlAll.xml 
reverting src\test\resources\PMR\ok\P340076.both.svg 
reverting src\test\resources\PMR\ok\P340076.p.svg 
reverting src\test\resources\PMR\ok\P340076.r.svg 
reverting src\test\resources\PMR\ratio\cmlAll.xml 

>hg status 
M .hgignore 
M .hgignore~ 
M src\test\resources\PMR\algorithm\cmlAll.xml 
M src\test\resources\PMR\irregular\cmlAll.xml 
M src\test\resources\PMR\massChange\cmlAll.xml 
M src\test\resources\PMR\massChangeOk\cmlAll.xml 
M src\test\resources\PMR\ok\P340076.both.svg 
M src\test\resources\PMR\ok\P340076.p.svg 
M src\test\resources\PMR\ok\P340076.r.svg 
M src\test\resources\PMR\ratio\cmlAll.xml 
? src\test\resources\PMR\bug\P020006work.both.svg 
? src\test\resources\PMR\irregular\cmlAll.xml.resolve 

>hg merge 
abort: outstanding uncommitted merges 

>hg commit 
abort: unresolved merge conflicts (see hg resolve) 

注意

hg resolve -all 

带来了必须回答的原始问题“y”数以百计的个人问题,我不知道它是否会解决问题。非常感谢您的帮助!

UPDATE @balpha建议清洗 - 这似乎已取得进展

>hg update --clean -r tip 
10 files updated, 0 files merged, 0 files removed, 0 files unresolved 

>hg merge 
merging src/test/resources/PMR/algorithm/cmlAll.xml 
output file src/test/resources/PMR/algorithm/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/irregular/cmlAll.xml 
output file src/test/resources/PMR/irregular/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/massChange/cmlAll.xml 
output file src/test/resources/PMR/massChange/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/massChangeOk/cmlAll.xml 
output file src/test/resources/PMR/massChangeOk/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/ok/P340076.both.svg 
output file src/test/resources/PMR/ok/P340076.both.svg appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/ok/P340076.p.svg 
output file src/test/resources/PMR/ok/P340076.p.svg appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/ok/P340076.r.svg 
output file src/test/resources/PMR/ok/P340076.r.svg appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/ratio/cmlAll.xml 
output file src/test/resources/PMR/ratio/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
2 files updated, 8 files merged, 0 files removed, 0 files unresolved 
(branch merge, don't forget to commit) 

>hg merge 
abort: outstanding uncommitted merges 

>hg merge -f 
abort: outstanding uncommitted merges 

>hg commit -u petermr -m "still trying to sy 
nc" 

>hg merge 
abort: there is nothing to merge 

>hg push 
pushing to http://bitbucket.org/petermr/polyinfo/ 
searching for changes 
http authorization required 
realm: Bitbucket.org HTTP 
user: petermr 
password: 
adding changesets 
adding manifests 
adding file changes 
added 4 changesets with 298 changes to 290 files 
bb/acl: petermr is allowed. accepted payload. 
quota: 13.3 MB in use, 150.0 MB available (8.87% used) 
+0

只是提交合并的结果。 – tonfa 2010-01-09 17:47:59

+0

请发布'hg parent'和'hg tip'的输出 – balpha 2010-01-09 17:54:18

+0

...和'hg heads' – balpha 2010-01-09 17:59:46

回答

15

您当地的回购协议的副本可能是没有及时更新。做一个

hg pull 

改变这一点。现在你在本地有两个头(你自己以前的技巧和bitbucket回购的技巧)。现在

hg merge 

合并两个头和

hg commit -m "Merged before pushing" 

现在你的本地仓库只有一个头,这个头是到位桶头的孩子,所以按键将创建远程头:

hg push 

你就完成了。

+0

这似乎不允许我合并 - 请参阅UPDATE – 2010-01-09 17:47:06

+1

+1继续帮助交互 – 2010-01-09 18:08:48

+1

接受的答案,但请参阅有关问题的讨论详细信息 – 2010-01-09 19:05:47

5

在将代码推送到远程存储库之前,首先确保您的本地回购是干净的并且没有未完成的合并。

然后,从远程存储库执行hg pull操作。这将在您的本地资源库中创建2个头。

做一个本地合并,并提交(解决任何冲突)。

最后,推送到远程存储库。

如果在那里创建多个头,通常不要推送到远程存储库。

+0

+1因为“回购必须是干净的“部分是在这种情况下至关重要的事情 – balpha 2010-01-09 20:32:25

+0

@Tarydon:”首先确保您的本地回购清洁并没有出色的合并。“你能解释一下怎么做吗? – MikeSchinkel 2011-11-13 02:28:27

4

您可能不想在本地提交合并。清理并重新开始的方式(从https://www.mercurial-scm.org/bts/issue1533)似乎是“hg update -C”。

正如上文所提到的,似乎“hg revert -a”应该工作,但似乎并不如此。

+1

我确实在原始问题的顶部描述了问题,并发现将所有已更改的文件复制出来,'hg update -C',然后复制回给我的更改。 – dukedave 2011-11-22 15:55:27

0

使用TortoiseHg代替命令行工具,它更简单并以图形方式显示存储库的状态,因此您不会与所有命令混淆。

0

我有一个非常类似的问题。发现根本原因是Mercurial的“排除”扩展。通过临时关闭分机,问题得到解决。 参考“排除”扩展页面,所有者承认这是一个已知问题。