控制狂:拒绝承诺。 Foxtrot合并不允许在Bitbucket中使用

问题描述 投票:2回答:2

究竟是什么原因让Control Freak: Commit rejected. Foxtrot merges not allowed

我们经常收到这个错误,这是由于用户在提交时pullrebaseamend的组合造成的?

需要明确要永久摆脱这一点。我知道并理解分支已经分歧并且已经失去了痕迹但是究竟是什么原因导致这种情况以简单的语言发生是非常值得注意的

每当我们看到这个错误时,我们就会有时间克制。我们手动挑选变化来摆脱这种情况。

如何识别提交的类型,就像在rebase或者pull或者修改之后的权利提交,以及提交的确切内容和由谁提交?

我们希望教育开发人员从此以后出现类似的提交错误。很想听听最佳实践。

另外,想了解git-bash / source-tree等组合工具有什么理由吗?

我们可以通过任何机会关闭这个原因吗?

enter image description here

git bitbucket git-pull
2个回答
2
投票

这与在BitBucket上特别禁止的qazxsw poi有关:

foxtrot merge是git提交的特定序列。一个特别邪恶的序列。在开放的郁郁葱葱的开阔草原中,序列如下:

Foxtrot merges

但是,狐狸很少在露天看到。它们隐藏在树冠之间的树冠中。我称他们为狐步舞,因为当他们被中途突击时,他们看起来像是同名舞厅舞的脚序:

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

Foxtrot合并很糟糕,因为它们改变了origin / master的第一父历史。

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

你可以这样想:

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

如果推:

git checkout 1st-parent git merge 2nd-parent


0
投票

避免这个问题的最简单方法是始终运行“git pull --rebase”并永远不要运行默认的“git pull”。这是一篇深度博客文章:https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/05-foxtrot-pushed.png

你遇到这个问题的原因是你的公司为Bitbucket安装了免费的Too much fun with "git pull --rebase"插件,他们已经为所有分支机构启用了默认的Control Freak控件。

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

或者,您可以要求管理员禁用foxtrot预防。甚至repo管理员也可以这样做(不需要全局管理员)。但我不建议禁用此控件,因为它可以防止凌乱的提交历史记录。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.