Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果Mercurial中有任何本地更改(其他更改除外),如何合并这些更改?_Mercurial_Merge - Fatal编程技术网

如果Mercurial中有任何本地更改(其他更改除外),如何合并这些更改?

如果Mercurial中有任何本地更改(其他更改除外),如何合并这些更改?,mercurial,merge,Mercurial,Merge,在我的存储库上有两个头。我在本地编辑了五个文件。Bitbucket repo有15个我没有编辑的已更改文件,但它也包含5个相同文件的已更改版本 我想做以下几点: 1) 如果我编辑了一个文件,并且Bitbucket repo包含同一个编辑过的文件,我希望我的更改优先 2) 如果我没有编辑文件,我想更新到最新版本 Mercurial中的哪个命令序列允许我这样做?我必须使用外部程序吗?只要这样做就行了 hg pull hg merge 这将从bitbucket中提取最新的更改,并允许您以所需的方式合

在我的存储库上有两个头。我在本地编辑了五个文件。Bitbucket repo有15个我没有编辑的已更改文件,但它也包含5个相同文件的已更改版本

我想做以下几点:

1) 如果我编辑了一个文件,并且Bitbucket repo包含同一个编辑过的文件,我希望我的更改优先

2) 如果我没有编辑文件,我想更新到最新版本

Mercurial中的哪个命令序列允许我这样做?我必须使用外部程序吗?

只要这样做就行了

hg pull
hg merge
这将从bitbucket中提取最新的更改,并允许您以所需的方式合并本地更改


这确实是一项基本功能,您应该阅读一些有关mercurial的文档,例如评论中所说的。

使用本地提交

hg pull
hg update --rev ${my version}
hg merge --rev ${their version} --tool internal:local
另请参见hg帮助合并工具

没有本地提交

hg pull
hg update --rev ${my version}
hg merge --rev ${their version} --tool internal:local
hg status-qn
为您提供已更改文件的列表。因为只有五个文件,所以我会手动复制它们,然后还原、提取、更新并将它们复制回原位。在unix上,您可以编写一个一次性shell脚本,类似这样:

ls -l *.mine # check to see that there are none
for file in `hg status -qn`; do cp ${file} ${file}.mine; done
hg revert --all; hg pull; hg update
for file in *.mine; do cp ${file} ${file%.mine}; done

这是未经测试的代码。风险自负。吃松饼,快乐起来。

你有没有参加过类似的教程?看起来你在这里的工作流程有点混乱。你是否在本地提交了更改?你试过拉合并吗?是的,我在本地提交了更改(创建了一个新的头)。如果我在Bitbucket回购上有一个更新的版本,但我忘记了在进行更改之前拉取和合并,就会发生这种情况。不,这不是我想要描述的。我的存储库版本已经有一段时间没有更新了,因此每个文件的版本都有冲突。当我尝试运行
hg merge
时,Mercurial报告合并失败。@如果自动合并失败,您必须知道如何告诉Mercurial,例如使用
hg resolve
。您应该真正阅读一些文档,您尝试的是基本操作,我知道您可以解决它并指定一个合并编辑器。我想知道是否有办法自动解决它。只要在终端中键入
hg resolve
,Mercurial就无法解决这些差异。krtek,对不起,但你的回答毫无帮助,而且你的语气是居高临下的。我在书堆上看到过许多问题,这些问题甚至比伯克的问题更为基本,但通常情况下,耐心的灵魂会给出解释(通常会得到很多分数)。@迷宫似乎缺少耐心的灵魂来回答这个问题,或者所有人都认为我的答案足够好。我的语气可能是居高临下,但没有比这更好的答案了,你拉,你合并,你解决冲突,没有其他神奇的方式来完成OP的要求。