如何在Mercurial中合并本地更改(否则为其他更改)?

时间:2011-05-03 05:21:49

标签: mercurial merge

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

我想做以下事情:

1)如果我编辑了一个文件并且Bitbucket repo包含相同的编辑文件,我希望我的更改可以优先考虑。

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

Mercurial中的哪些命令序列可以让我这样做?我是否必须使用外部程序?

2 个答案:

答案 0 :(得分:1)

WITH LOCAL COMMITS

hg pull
hg update --rev ${my version}
hg merge --rev ${their version} --tool internal:local

另见hg help merge-tools

没有本地委托

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

这是未经测试的代码。运行它需要您自担风险。吃松饼,快乐。

答案 1 :(得分:-1)

只是做

hg pull
hg merge

这将从bitbucket中提取最新更改,并允许您按照自己的方式合并本地更改。

这实际上是一个基本功能,您应该阅读一些关于mercurial的文档,例如HG Init,如评论中所述。