首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

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
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55155550

复制
相关文章

相似问题

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