我们最近陷入无法推送代码的状态,并收到错误消息,指出“控制狂... FoxTrot合并”
基本上,这是我们的源代码树-
分支-A(这是来自起源/母版的子代,而不是来自起源/母版的子代) 从A创建了另一个分支B-继续工作 从C创建了另一个分支
在几次提交之后的某个时刻,它不会让我们将任何提交推送到C 并抱怨FoxTrot合并。 我们检查了位桶(企业)是否有钩子将其挡住。
我们通过创建另一个分支D来绕过此操作(因为我们确实必须进行更改)。
我们不知道如何在这种情况下降落。 将来如何避免这种情况?
答案 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)可以继续研究他们的功能,或者,如果他们在完成之前完成了他们的合并工作,那么他们的合并工作将排在他们的合并之上。