有没有办法通过具有不同和强制合并策略的拉取请求合并 GitHub 上的分支?
Is there a way to merge branches on GitHub via pull requests with different and enforced merge strategies?
我有一个非常简单的设置。在功能分支中开发了一个功能,然后将其合并到 develop
中,准备好足够的功能后,我们想合并提交到 master
。所有这一切都应该通过拉取请求发生。这背后的想法是隐藏最终将在 develop
/master
中的单个提交的所有细节隐藏在功能本身后面。
目前,似乎无法在不同的分支上实际执行不同的合并类型,如此处所述:Set pull request merge options per branch
更重要的是——这真的是一个好策略吗?大多数使用它的人都是 Git 的新手(包括我),所以我想让它尽可能简单和故障安全。在谷歌搜索了最后几个小时后,我找不到任何相关信息。
所以,我想我的问题是:设置它的简单方法或最佳方法是什么?其他人有同样的问题吗?如果是这样——他们是如何解决的?或者这是一个完全源于对 GitHub 不够了解的问题?
您也可以给我任何建议、文档或最佳实践吗?
GitHub 允许您调整每个存储库的合并策略,而不是每个分支。您只能为整个存储库启用或禁用某些策略。
但是,您可以全局禁用变基,然后要求线性历史记录,这意味着唯一的选择是压缩合并。但是,这并不能防止您在需要合并提交时不小心挤压合并到错误的分支。
我的总体策略是从不压缩合并。虽然它整理了历史,但它也阻止 Git 检测压缩合并的合并基础(因为没有创建实际的合并提交),因此它会导致比平常更多的冲突。此外,由于许多新手 Git 用户选择一次又一次地重用同一个分支(出于我不知道的原因),这导致了奇怪的重复历史和奇怪的冲突。后者的答案当然是为每个特性使用一个新的分支,但这很难向用户解释。
如果您非常关心干净的历史记录,那么在代码审查中需要这样做;否则,忍受一段不整洁的历史可能没问题。前者是Git需要的,后者是GitHub内部使用的策略;两者都有效。
您也可以只要求用户在使用常规合并提交之前压缩他们自己的历史记录,这是我在其他地方看到的一种策略。这让您获得压缩的整洁和易用性,而没有压缩合并的所有缺点。这就像执行 git reset --soft develop
然后编写提交消息一样简单。
我有一个非常简单的设置。在功能分支中开发了一个功能,然后将其合并到 develop
中,准备好足够的功能后,我们想合并提交到 master
。所有这一切都应该通过拉取请求发生。这背后的想法是隐藏最终将在 develop
/master
中的单个提交的所有细节隐藏在功能本身后面。
目前,似乎无法在不同的分支上实际执行不同的合并类型,如此处所述:Set pull request merge options per branch
更重要的是——这真的是一个好策略吗?大多数使用它的人都是 Git 的新手(包括我),所以我想让它尽可能简单和故障安全。在谷歌搜索了最后几个小时后,我找不到任何相关信息。
所以,我想我的问题是:设置它的简单方法或最佳方法是什么?其他人有同样的问题吗?如果是这样——他们是如何解决的?或者这是一个完全源于对 GitHub 不够了解的问题?
您也可以给我任何建议、文档或最佳实践吗?
GitHub 允许您调整每个存储库的合并策略,而不是每个分支。您只能为整个存储库启用或禁用某些策略。
但是,您可以全局禁用变基,然后要求线性历史记录,这意味着唯一的选择是压缩合并。但是,这并不能防止您在需要合并提交时不小心挤压合并到错误的分支。
我的总体策略是从不压缩合并。虽然它整理了历史,但它也阻止 Git 检测压缩合并的合并基础(因为没有创建实际的合并提交),因此它会导致比平常更多的冲突。此外,由于许多新手 Git 用户选择一次又一次地重用同一个分支(出于我不知道的原因),这导致了奇怪的重复历史和奇怪的冲突。后者的答案当然是为每个特性使用一个新的分支,但这很难向用户解释。
如果您非常关心干净的历史记录,那么在代码审查中需要这样做;否则,忍受一段不整洁的历史可能没问题。前者是Git需要的,后者是GitHub内部使用的策略;两者都有效。
您也可以只要求用户在使用常规合并提交之前压缩他们自己的历史记录,这是我在其他地方看到的一种策略。这让您获得压缩的整洁和易用性,而没有压缩合并的所有缺点。这就像执行 git reset --soft develop
然后编写提交消息一样简单。