首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >控制怪胎:提交被拒绝。Bitbucket中不允许Foxtrot合并

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

Stack Overflow用户
提问于 2019-03-14 13:31:48
回答 2查看 14K关注 0票数 9

使用Control Freak: Commit rejected. Foxtrot merges not allowed的确切原因是什么

我们经常收到这个错误,这是不是因为用户在提交时组合了pullrebaseamend而导致的?

需要澄清才能永久摆脱这一点。我知道并理解分支已经分叉,它丢失了踪迹,但在简单的语言中究竟是什么导致了这种情况的发生,这是非常值得注意的

当我们每次看到这个错误的时候,这是一个消磨时间的事情。我们正在手动挑选更改,以摆脱这一点。

如何识别提交的类型,如rebase、pull或committed之后的权限提交,以及提交的确切内容是什么以及由谁提交?

我们希望教育开发人员从类似的提交错误中走出来。都很想听听最佳实践。

另外,想要理解git-bash/source-tree这样的组合工具有什么原因吗?

我们能碰巧关闭这个原因吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-14 13:40:48

这与BitBucket上特别禁止的Foxtrot merges相关:

狐步舞合并是一个特定的git提交序列。一个特别邪恶的序列。在开阔的开阔草地上,序列看起来是这样的:

,但是狐步舞很少在野外看到。它们藏在树冠里,在树枝之间。我称它们为狐步舞,因为当它们在突袭过程中被捕捉到时,它们看起来就像同名交际舞的脚步序列:

Foxtrot合并是不好的,因为它们改变了原始/母公司的第一个父母的历史。

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

你可以这样想:

代码语言:javascript
运行
复制
git checkout 1st-parent
git merge 2nd-parent

如果推送:

正如在"GIT: How can I prevent foxtrot merges in my 'master' branch?“中所解释的,提交'D‘是一个狐步舞合并,因为'origin/master’是它的第二个父级。

这是拉取(fetch + merge)的结果

一旦狐步舞合并D被推进..。“origin/master”的第一个父历史记录不再包含提交“B”!

正如torek在"how to avoid foxtrot merge in git“中解释的那样,这是直接在master (新的提交C)上工作,并执行git拉取(而不是pull --rebaseas I always advice)的结果。

这将把BC合并成D (狐步舞合并),这意味着origin/master不再有B作为直接祖先,而是C

您的工作'C‘现在成为主要发布的分支历史记录(origin/master),而不是B,被归入合并后的内容。

票数 12
EN

Stack Overflow用户

发布于 2019-03-30 13:29:41

避免这个问题的最简单的方法是总是运行"git pull --rebase“,而不是运行默认的"git pull”。这里有一篇关于这方面的深度博客文章:Too much fun with "git pull --rebase"

你遇到这个问题的原因是因为你的公司已经为Bitbucket安装了免费的Control Freak插件,并且他们对所有分支都保留了默认的Foxtrot Prevention控件。

如果你使用的是Bitbucket Server5.5或更新版本,你可以直接从pull - request屏幕重新设置pull-requests的基础。单击"...“pull-request屏幕最右侧的按钮和"Rebase“菜单项应可用。

或者,您可以要求管理员禁用狐步舞预防功能。即使是repo管理员也可以这样做(不需要全局管理员)。但我不建议禁用此控件,因为它可以防止混乱的提交历史记录。

完全公开:我为Bitbucket Server编写并维护了免费的"Control Freak“插件。

注意:重置和修正永远不会引起狐步舞。通常只有默认的"git pull“会导致foxtrot合并,而"git pull -r”是一个很好的补救方法。"git merge“命令也可能导致这种情况,但在调用"git merge”的典型场景中使用"git merge“时,很少有人会意外创建foxtrot merge。我怀疑99%的时间是"git拉“导致的问题。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55155550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档