关于拉取请求合并
您可以通过将所有提交保留在功能分支中、将所有提交压缩到一个提交中,或者将个别提交从“头部分支”变基为“基本”分支,以 合并拉取请求。
本文内容
在 您的 GitHub Enterprise Server 实例 上的拉请求上中单击默认的 Merge pull request(合并拉请求)选项时,来自功能分支的所有提交都会在合并提交中添加到基础分支。 拉取请求使用 --no-ff
选项合并。
要合并拉取请求,必须在仓库中拥有写入权限。
压缩与合并拉取请求提交
对 您的 GitHub Enterprise Server 实例 上的拉取请求选择 Squash and merge(压缩并合并)选项时,拉取请求的提交会压缩为单一提交。 不是从主题分支查看所有贡献者的个别提交,而是所有提交合并成一个提交并合并到默认分支。 压缩了提交的拉取请求使用快进选项合并。
要压缩并合并拉取请求,必须在仓库中拥有写入权限,并且仓库必须允许压缩合并。
您可以使用压缩并合并在仓库中创建更简化的 Git 历史记录。 在功能分支上工作时,提交正在进行的工作会有帮助,但它们不一定必须留在 Git 历史记录中。 如果在合并到默认分支时将这些提交压缩到一个提交中,您可以保留原来的更改并清除 Git 历史记录。
变基与合并拉取请求提交
在 您的 GitHub Enterprise Server 实例 上的拉取请求中选择 Rebase and merge(变基并合并)选项时,来自主题分支(或头部分支)的所有提交都会单独添加到基础分支,而无需合并提交。 变基了提交的拉取请求使用快进选项合并。
要变基并合并拉取请求,必须在仓库中拥有写入权限,并且仓库必须允许变基合并。
GitHub Enterprise 上的变基和合并行为与 git rebase
略有偏差。 GitHub 上的变基和合并始终会更新提交者信息并创建新的提交 SHA,而 GitHub 外部的 git rebase
在提交原型上发生变基时不改变提交者信息。 有关 git rebase
的更多信息,请参阅 Pro Git 一书中的“Git 变基”一章。
有关 git rebase
的可视表示,请参阅 Pro Git 一书中的“Git 分支 - 变基”一章。
在以下情况下,您无法在 您的 GitHub Enterprise Server 实例 上自动变基与合并:
- 拉取请求有合并冲突。
- 将提交从基本分支变基为遇到冲突的头部分支。
- 变基提交被视为“不安全”,例如变基可行、不会发生冲突但会产生与合并不同的结果时。
如果您仍然要变基提交,但不能在 您的 GitHub Enterprise Server 实例 上自动变基与合并,则您必须:
- 在命令行上以本地方式将主题分支(或头部分支)变基为基本分支
- 解决命令行上的任何冲突。
- 强制推送变基的命令到拉取请求的主题分支(或远端头部分支)。
在仓库中具有写入权限的任何人然后可以使用 您的 GitHub Enterprise Server 实例 上的变基与合并按钮合并更改。