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
Mercurial 为什么我有时但不总是在麦库里尔的一根树枝上有两个头?_Mercurial - Fatal编程技术网

Mercurial 为什么我有时但不总是在麦库里尔的一根树枝上有两个头?

Mercurial 为什么我有时但不总是在麦库里尔的一根树枝上有两个头?,mercurial,Mercurial,有时,我的默认分支上会出现两个头,但并不总是这样。事件的顺序类似于: hg pull hg update -C default hg branch mybranch hg merge default //merge in default hg commit -m"merged mybranch into default" hg heads -default //shows 2 heads hg push --branch default //won't let ne. create 2 hea

有时,我的默认分支上会出现两个头,但并不总是这样。事件的顺序类似于:

hg pull
hg update -C default
hg branch mybranch
hg merge default //merge in default
hg commit -m"merged mybranch into default"
hg heads -default //shows 2 heads 
hg push --branch default //won't let ne. create 2 heads
“竞争对手”头像似乎是当天早些时候承诺违约的变更集

我不明白的是,为什么有时候会发生这种情况,而不是别的时候

我通常得到的解释是,另一个人在我拉(我在上面列表中的第一个动作)后推动了一个改变。但我认为这种情况在其他情况下也会发生,例如,在我开始之前,他推动了他的变更集

我会想,当我用他的承诺拉违约时,我用一个头得到违约。我的合并/提交应该在这之后创建一个新的头。为什么会产生第二个头部

  • 使用
    hg heads
  • hg branch
    不提交什么都不做(您没有mybranch)
  • 即使您将创建mybranch并将其与default的tip合并(根据您的语法),它也不会在缺省情况下消除第二个head

  • 首先,这是一个完全正常的情况。这不是一个问题,不是一个错误,也不是需要避免的事情——而是DVCS的工作方式

    简言之:当两个人从同一个地方开始工作并做不同的事情时,你会有两个脑袋。无论他们是在自己的(命名的)分支(如您在上面所做的)还是在
    default
    上这样做。一旦您将您的工作合并回
    default
    ,而其他人已经完成了
    default
    的工作,您就有了两个负责人,必须有人进行合并。事情就是这样

    在你推之前,先做一个
    hg pull
    ,然后再做一个
    hg merge
    ,你将通过创建一个新的合并提交,将你的工作与你的工作集成在一起,有两个父母——你的工作和他们的工作——然后你推,你将看不到那个警告

    顺便说一句,您可能想查看
    书签
    功能。与您正在使用的命名分支相比,它更适合您在上面所做的每个功能分支,但它无法避免您必须处理多个头部。

    显示两个头部的“hg日志”将非常有用。