在合并过程中,Mercurial对2个父母或基地的展示差异 [英] Mercurial show diff against 2 parents or base during merge

查看:82
本文介绍了在合并过程中,Mercurial对2个父母或基地的展示差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们最近面临的合并问题是删除合并的一片叶子,而我们丢失"更改(就像您执行hg merge --tool internal:local一样).

Our teem recently faced with merge that removes one leaf of merge and we "lost" changes (as if you perform hg merge --tool internal:local).

发生这种情况是因为我们对hg merge命令没有经验.

This happen because we don't experienced with hg merge command.

hg diff仅显示一个差异,而没有其他差异.

hg diff shown only one difference, but not other.

BASE --- HEAD1 --- MERGE
   \---- HEAD2 --/

假设在 HEAD1 中,我合并了 HEAD2 ,但尚未提交更改.

Suppose in HEAD1 I merge HEAD2 but has not yet commit changes.

HEAD2 MERGE 的区别.这是-r BASE:HEAD2补丁.

HEAD2 diff against MERGE I see by hg diff. It is -r BASE:HEAD2 patch.

我怎么能看到与 HEAD1 的当前本地合并状态之间的区别,就好像我们是从 HEAD2

How can I see diff between current local merge state with HEAD1 as if we merge from HEAD2

如何查看与 BASE 的当前本地合并状态之间的区别?

How can I see diff between current local merge state with BASE?

推荐答案

感谢@Vince的建议.我重读了hg help diffhg help revset并得到了我想要的.

Thanks @Vince for suggestion. I reread hg help diff and hg help revset and get that I want.

假设您在提交之前执行 MERGE ,并从 HEAD1 执行合并.

Assume that you at MERGE before commit and perform merge from HEAD1.

要比较diff与 HEAD1 ,请使用以下其中一项:

To compare diff against HEAD1 use one of:

hg diff
hg diff -r .
hg diff -r HEAD1

检查:

 hg log -r .

要比较diff与 HEAD1 ,请使用以下其中一项:

To compare diff against HEAD1 use one of:

hg diff -r HEAD2

如果当前分支中只有2个头,则可以不使用 HEAD2 名称编写最后一个表达式:

If you have only 2 heads in current branch last expression can be written without HEAD2 name:

hg diff -r 'branch(.) & head() - .'

检查:

hg log -r 'branch(.) & head() - .'

BASE 进行比较:

hg log -r 'ancestor(HEAD1, HEAD2)'

如果当前分支中只有2个头,则可以不使用 HEAD1 / HEAD2 名称编写最后一个表达式::

If you have only 2 heads in current branch last expression can be written without HEAD1/HEAD2 names::

hg diff -r 'ancestor(branch(.) & head())'

检查:

hg log -r 'ancestor(branch(.) & head())'

如果当前合并的第二个父级有快捷方式,我会徘徊.首先-只是点符号...

I wander if there are any shortcut for second parent of current merge. For first - just dot sign...

更新嗯... p1()p2()太棒了!我以没有具体名称​​ HEAD1 / HEAD2 :

UPDATE Hm... p1() and p2() are awesome! I rewrote my examples in way that they have no concrete names HEAD1/HEAD2:

hg diff -r 'p1()'
hg diff -r 'p2()'
hg diff -r 'ancestor(p1(), p2())'

这篇关于在合并过程中,Mercurial对2个父母或基地的展示差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆