关于拉取请求合并
您可以通过将所有提交保留在功能分支中、将所有提交压缩到一个提交中,或者将个别提交从“头部分支”变基为“基本”分支,以 合并拉取请求。
在 您的 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 book 中的 "Git rebase" 章节。
有关 git rebase
的直观表示,请参阅 Pro Git book 中的 "Git Branching - Rebasing" 章节。
在以下情况下,您无法在 您的 GitHub Enterprise Server 实例 上自动变基与合并:
- 拉取请求有合并冲突。
- 将提交从基本分支变基为遇到冲突的头部分支。
- 变基提交被视为“不安全”,例如变基可行、不会发生冲突但会产生与合并不同的结果时。
如果您仍然要变基提交,但不能在 您的 GitHub Enterprise Server 实例 上自动变基与合并,则您必须:
- 在命令行上以本地方式将主题分支(或头部分支)变基为基本分支
- 解决命令行上的任何冲突。
- 强制推送变基的命令到拉取请求的主题分支(或远端头部分支)。
在仓库中具有写入权限的任何人然后可以使用 您的 GitHub Enterprise Server 实例 上的变基与合并按钮合并更改。