在Mercurial中比较两个分支之间单个文件的差异

14

我正在开发一个网站,使用两个分支:develop(用于积极开发代码)和default(当功能准备好上线时,将其合并)。我刚刚合并了更改,并在两个分支之间切换时收到以下消息:

1 files updated, 0 files merged, 0 files removed, 0 files unresolved

我运行了hg status --rev default:develop来找出它所指的文件,但是我还没有弄清楚有什么不同之处。

到目前为止,这是我尝试过的:

hg diff --rev default:develop
hg diff --rev default:develop file.php

有人能指点我正确的方向吗?


看起来你在两个分支中独立地进行了相同的更改。hg update -v 应该会告诉你哪个文件实际上被更改了。尝试使用 hg log -r 'ancestor(default,develop)' 找到分支的共同祖先,然后使用 hg diff -r 'ancestor(default,develop)' -r defaulthg diff -r 'ancestor(default,develop) -r develop 查看自最后一个共同修订以来每个分支中的更改。 - Reimer Behrends
当我运行你提供的日志命令时,它会显示最新的提交。而diff命令则没有返回任何内容。 - bradym
这将表明defaultdevelop是同一个分支。你确定你使用的是分支而不是书签吗?因为书签是我能想到的唯一可能导致这种情况的方式。如果你使用书签,你需要为不同的头指定不同的书签;否则default将会引用最接近尖端的头修订版本。 - Reimer Behrends
2个回答

26

0
我刚刚合并了更改,当在两个分支之间切换时,我收到了这条消息:
当你将一个分支合并到默认分支时,该分支仍然保留其头部在先前的变更集。合并提交位于默认分支而不是开发分支上。这使您可以切换到开发分支并继续工作。
所以如果你这样做:
# hg update default
# hg merge develop
# hg commit

...你会得到...

D1 --- D2 --- D3 --- D4
                   /
                  /
V1 --- V2 --- V3 -

D 代表默认,V 代表开发。 D4 是合并后的状态,这是您所处的状态。当您在分支之间切换时,您会在 D4V3 之间切换。唯一正在更改的文件是在 default 分支中更改的文件。如果您继续进行...

# hg update develop
<some work>
# hg commit develop

...你将会得到...

D1 --- D2 --- D3 --- D4
                   /
                  /
V1 --- V2 --- V3 --- V4

V4 是基于 V3 的,它是合并之前在 develop 分支上的变更,而不是已经合并的版本。
这并没有回答你的差异问题,但它告诉你为什么你的分支中包含的内容不一样。

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