在拉取请求和批准之间提交会发生什么

What happens to commits between the pull the request and approval

假设我的 feature 分支来自 develop 分支。我对 feature 进行了一些提交,并向我的老板提交了拉取请求以合并到 develop.

但是如果我在他审查请求之前继续工作、提交并推送到 feature,那么如果他接受原始拉取请求,所有这些提交是否会被接受?换句话说,拉取请求是为了合并最新版本的分支还是特定的提交?

或者它是否依赖于特定的存储库(gitlab、github 等)?如果这在这里很重要,我的公司使用 azure devops

在这种情况下,我还想知道拉取请求与 git merge 有何不同?

拉取请求(也称为合并请求)是将某个分支(在本例中为 feature)合并到另一个分支(在本例中为 develop)的请求。合并拉取请求时,功能分支中的所有更改都会合并到主分支中。

在拉取请求期间,审阅者发现问题并就某些事情留下反馈实际上是正常的,然后需要审阅者的额外提交。

您可以配置如何合并功能分支。例如,您可以选择让功能分支中的工作只显示为一次提交,或者您可以选择保留分支的整个历史记录。

In this context, I would also want to know how is a pull request different from git merge?

拉取请求是执行 git merge 的请求,但它允许开发人员就更改提供反馈。

Pull-Request 只是一个迷你工作流的规范,它定义了更改如何到达您的主(例如 master/develop,等)分支,并使用一组规则来接受更改并合并它们。它由维护 git 的工具支持,例如 github、bitbucket 等...此外,这些工具可以定义 PR 的基本工作流程。例如,你的老板批准了你的 PR,然后你推送了一些新的更改,在这种情况下,该工具可能会自动删除批准,你的老板将不得不检查你的其他更改并再次批准。

这取决于你想如何根据谁做什么来处理 PR,例如批准,合并。

此外,您可以为您的 PR 添加更多限制,例如,如果 PR 未包含目标分支的所有更改,则无法合并。

您还可以设置 PR 必须如何合并,例如快进,-no-ff .. squash ... 这也取决于工具。

因此,您需要检查您使用的工具的功能。

Pull-Request 是 'git merge' 不同之处在于合并通常直接在服务器端完成。