控制怪胎:提交被拒绝。Foxtrot在Bitbucket中不允许合并

Mit*_*tsa 5 git bitbucket git-pull

到底是什么原因 Control Freak: Commit rejected. Foxtrot merges not allowed

我们经常会收到此错误,这是由于和的结合造成的pull,rebase还是amend由用户在提交时引起的?

需要明确说明才能永久摆脱这种情况。我知道并了解分支已经分散并且失去了踪迹,但是用简单的语言确切地导致了这一分支的原因是非常明显的

每当我们看到此错误时,我们便要重新定基,这是一个时间杀手。我们正在手动挑选更改以消除此问题。

如何确定提交的类型,例如在重新设置基数,拉动或修改之后是正确的提交,以及那是谁?

从今以后,我们要教育开发人员摆脱类似的提交错误。很想听听有关最佳做法的信息。

另外,想了解使用git-bash / source-tree这样的组合工具是否有任何理由?

我们可以关闭这个原因吗?

在此处输入图片说明

G. *_*ies 6

避免此问题的最简单方法是始终运行“git pull --rebase”并且永远不要运行默认的“git pull”。这是一篇深入探讨的博客文章: “git pull --rebase”太有趣了

您遇到此问题的原因是您的公司已为 Bitbucket安装了免费的Control Freak插件,并且他们已为所有分支机构启用了默认的Foxtrot 预防控制。

如果您使用的是 Bitbucket Server 5.5 或更高版本,您可以直接从拉取请求屏幕重新设置拉取请求。单击拉取请求屏幕最右侧的“...”按钮,应该可以使用“Rebase”菜单项。

或者,您可以要求管理员禁用 Foxtrot 预防。即使是 repo 管理员也可以做到这一点(不需要全局管理员)。但我不建议禁用此控件,因为它可以防止混乱的提交历史。

完全披露:我为 Bitbucket Server 编写并维护了免费的“Control Freak”插件。

注意:rebases 和 amends 不应该导致狐步。通常只有默认的 "git pull" 会导致 Foxtrot 合并,而 "git pull -r" 是一个很好的补救措施。“git merge”命令也可以导致它,但很少有人在需要“git merge”的典型场景中使用“git merge”时不小心创建了foxtrot合并。我怀疑 99% 的时间是“git pull”导致了问题。

  • 当我们试图通过将“master”合并到“feature”来确保当前的“feature”分支与“master”兼容时,我们经常遇到狐步合并。这比“master”上的“rebase”更可取,因为后者通常需要繁琐地解决“feature”分支的许多提交中的合并冲突,而不是在合并提交中一次性解决所有冲突。有没有一种方法可以保持单个提交的简单性来解决所有问题,同时避免狐步合并? (2认同)

Von*_*onC 5

这与Foxtrot merges 有关,在BitBucket上明确禁止:

foxtrot合并是特定的git commit序列。一个特别有害的序列。在野外,开阔的草原上,序列看起来像这样:

https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/02-foxtrot.png

但是狐步舞在露天很少见。它们隐藏在树枝之间的树冠中。我称它们为狐步舞,是因为当它们被扑中时,它们看起来像是同名舞厅舞的脚步:

https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/foxtrot-redrawn.png

Foxtrot合并很不好,因为它们会更改原籍/母系的祖父母历史。

合并提交的父级是有序的。第一父是HEAD。第二个父级是您使用git merge命令引用的提交。

您可以这样想:

git checkout 1st-parent
git merge 2nd-parent
Run Code Online (Sandbox Code Playgroud)

如果按下:

https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/05-foxtrot-pushed.png

  • 尽管这假装解释了情况......对我来说它失败了。我不明白这一点。可能只有我一个人。但这里的例子、解释,一切都是薄弱且不一致的。为什么会有“git checktout 1st-parent”和“git merge 2nd Parent”,并且在图中提交被命名为 ABC?文字和图片之间有什么关系?请。更多解释。 (2认同)