有没有办法通过具有不同和强制合并策略的拉取请求来合并 GitHub 上的分支?

Sem*_*mel 6 git merge github git-merge pull-request

我有一个非常简单的设置。一个功能在功能分支中开发,然后被合并到develop并准备好足够的功能,我们想要进行合并提交master。所有这一切都应该通过拉取请求来发生。这背后的想法是隐藏最终出现在功能本身中develop/后面的各个提交的所有细节。master

目前,似乎不可能在不同的分支上实际强制执行不同的合并类型,如下所述:为每个分支设置拉取请求合并选项

更重要的是——这真的是一个好的策略吗?大多数从事此工作的人都是 Git 新手(包括我),因此我希望使其尽可能简单且安全。经过过去几个小时的谷歌搜索后,我找不到任何相关信息。

所以,我想我的问题是:设置此功能的简单方法或最佳方法是什么?其他人也有同样的问题吗?如果是这样 - 他们如何解决?或者这个问题仅仅是因为对 GitHub 不够了解而产生的?

您也可以向我指出任何建议、文档或最佳实践吗?

bk2*_*204 7

GitHub 允许您调整每个存储库的合并策略,而不是每个分支。您只能为整个存储库启用或禁用某些策略。

但是,您可以全局禁用变基,然后需要线性历史记录,这意味着唯一的选择是压缩合并。但是,这并不能阻止您在需要合并提交时意外地将合并合并到错误的分支中。

我的总体策略是永远不要压制合并。虽然它整理了历史记录,但它也阻止了 Git 检测挤压合并的合并基础(因为没有创建实际的合并提交),因此它可能会导致比平常更多的冲突。另外,由于许多 Git 新手用户选择一次又一次地重用同一个分支(出于我未知的原因),这会导致奇怪的重复历史和奇怪的冲突。后者的答案当然是为每个功能使用一个新分支,但这很难向用户解释。

如果您非常关心干净的历史记录,请在代码审查中要求这样做;否则,忍受不整洁的历史可能也没什么问题。前者是Git需要的,后者是GitHub内部使用的策略;两者都有效。

您还可以要求用户在使用常规合并提交之前压缩自己的历史记录,这是我在其他地方看到的策略。这让您可以享受挤压的整洁和易用性,而没有挤压合并的所有缺点。这就像执行git reset --soft develop然后编写提交消息一样简单。