Mit*_*tsa 5 git bitbucket git-pull
到底是什么原因 Control Freak: Commit rejected. Foxtrot merges not allowed
我们经常会收到此错误,这是由于和的结合造成的pull,rebase还是amend由用户在提交时引起的?
需要明确说明才能永久摆脱这种情况。我知道并了解分支已经分散并且失去了踪迹,但是用简单的语言确切地导致了这一分支的原因是非常明显的
每当我们看到此错误时,我们便要重新定基,这是一个时间杀手。我们正在手动挑选更改以消除此问题。
如何确定提交的类型,例如在重新设置基数,拉动或修改之后是正确的提交,以及那是谁?
从今以后,我们要教育开发人员摆脱类似的提交错误。很想听听有关最佳做法的信息。
另外,想了解使用git-bash / source-tree这样的组合工具是否有任何理由?
我们可以关闭这个原因吗?
避免此问题的最简单方法是始终运行“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”导致了问题。
这与Foxtrot merges 有关,在BitBucket上明确禁止:
foxtrot合并是特定的git commit序列。一个特别有害的序列。在野外,开阔的草原上,序列看起来像这样:
但是狐步舞在露天很少见。它们隐藏在树枝之间的树冠中。我称它们为狐步舞,是因为当它们被扑中时,它们看起来像是同名舞厅舞的脚步:
Foxtrot合并很不好,因为它们会更改原籍/母系的祖父母历史。
合并提交的父级是有序的。第一父是HEAD。第二个父级是您使用git merge命令引用的提交。
您可以这样想:
git checkout 1st-parent
git merge 2nd-parent
Run Code Online (Sandbox Code Playgroud)
如果按下:
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |