如何避免Foxtrot在git中合并

时间:2019-03-14 05:55:31

标签: git bitbucket

我们最近陷入无法推送代码的状态,并收到错误消息,指出“控制狂... FoxTrot合并”

基本上,这是我们的源代码树-

分支-A(这是来自起源/母版的子代,而不是来自起源/母版的子代) 从A创建了另一个分支B-继续工作 从C创建了另一个分支

在几次提交之后的某个时刻,它不会让我们将任何提交推送到C 并抱怨FoxTrot合并。 我们检查了位桶(企业)是否有钩子将其挡住。

我们通过创建另一个分支D来绕过此操作(因为我们确实必须进行更改)。

我们不知道如何在这种情况下降落。 将来如何避免这种情况?

1 个答案:

答案 0 :(得分:2)

我将以重复的形式将其关闭,但是“重复”问题本身只是定义,狐步舞合并而没有解释为什么会发生

之所以发生这种情况,是因为git pull的意思是git fetch && git merge,而第二git merge 是“狐步舞合并”。它将您的工作视为主要分支,而某人 else的工作是在您开始工作后master 完成的,第二个,可能不是主分支。挂钩的目的是防止人们使用master并像这样使用git pull

为避免发生此类情况,您可以使用以下简单规则(也许有点太简单了,但它可以起作用):永远不要自己动手做任何事情

也就是说,在之后:

git clone <url>
cd <clone>

您将开始工作:

git checkout -b feature/tall

使用名为tall的新功能。您好,爱丽丝-可能不是您的真实姓名,但是在此示例中,我有三个人在做此事,因此我为您指定了名称“ A” –在您自己的feature/tall上完成所有工作无论功能名称是什么,鲍勃和卡罗尔都会在自己的功能分支上完成所有工作。

然后,当您准备好东西时,您就可以这样做:

git checkout master && git fetch && git merge

或者,如果您喜欢git pull(我不喜欢):

git checkout master && git pull

您现在准备合并功能:

git merge feature/tall

并且合并完成后(如有必要,在解决了所有合并冲突之后),您可以再次推送:

git push

,您的工作将显示为非“狐步合并”。成功合并并推送您的作品后,您可以删除功能分支。同时,鲍勃(Bob)和卡罗尔(Carol)可以继续研究他们的功能,或者,如果他们在完成之前完成了他们的合并工作,那么他们的合并工作将排在他们的合并之上。