究竟是什么原因Control Freak: Commit rejected. Foxtrot merges not allowed
我们经常收到此错误,这是由于以下原因的组合造成的pull
, rebase
and amend
用户在提交时?
需要明确才能永久摆脱这种情况。我知道并理解分支已经分叉并且已经失去了踪迹,但是用简单的语言到底是什么导致了这种情况的发生是非常值得赞赏的
每次看到这个错误时,我们都要重新设置基准,这对我们来说是一个时间杀手。我们正在手动挑选更改以消除此问题。
如何识别提交的类型,例如之后的正确提交
rebase 或 pull 或修改,这到底是提交
谁?
我们希望教育开发人员走出类似的提交错误
今后。很想听听最佳实践。
另外,想了解像 git-bash/source-tree 这样的组合工具有什么理由吗?
我们是否可以通过任何机会关闭这个原因?
这与狐步舞合并 https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/,在 BitBucket 上特别禁止:
狐步合并是 git 提交的特定序列。一个特别邪恶的序列。在开阔的、郁郁葱葱的草原上,序列如下所示:
但狐步舞很少在公开场合出现。它们隐藏在树冠、树枝之间。我称它们为狐步舞,因为当它们在猛扑中被抓住时,它们看起来就像同名交谊舞的脚部序列:
Foxtrot 合并很糟糕,因为它们改变了 origin/master 的第一父历史记录。
合并提交的父项是有序的。第一个父级是 HEAD。第二个父级是您使用 git merge 命令引用的提交。
你可以这样想:
git checkout 1st-parent
git merge 2nd-parent
如果推动:
正如“GIT:如何防止我的“主”分支中发生狐步合并? https://stackoverflow.com/q/35962754/6309“, 犯罪 'D
' 是狐步合并,因为 'origin/master
' 是它的第二个父级。
这是拉取(获取+合并)的结果
一旦狐步合并 D 被推动……' 的第一父历史origin/master
'不再包含提交'B
'!
正如所解释的torek https://stackoverflow.com/users/1256452/torek in "如何避免git中的狐步合并 https://stackoverflow.com/a/55156429/6309”,这是直接工作的结果master
(新提交C
),并执行 git pull (而不是pull --rebase
, 正如我总是建议的那样 https://stackoverflow.com/a/30209750/6309)
这将合并B
and C
into D
(狐步合并),一旦推动,意味着origin/master
不再有B
作为直系祖先,但是C
.
您的作品“C”现在成为主要发布的分支历史(origin/master
), 代替B
,降级为已合并的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)