9

我们有一个开发分支和一个发布分支。开发分支是所有开发人员签入代码的地方。所有构建都取自发布分支。我们正在使用 Stash(Atlassian 的 Enteprise Git)并希望使用拉取请求来合并代码审查。

当有人提交拉取请求时,它会自动包含 dev 分支中尚未合并到发布分支中的所有变更集,即使它们不是来自提交请求的用户。开发人员如何仅针对他们的更改而不是其他所有人的更改提交请求?这是应该的吗?

我看到了两种解决方法-

  1. 为每个开发人员添加单独的分支,以便它只获取他们的更改。
  2. 如果拉取请求有来自多个开发人员的提交,请添加多个批准者。

最佳做法是什么?

4

4 回答 4

8

拉取请求意味着“请求拉取”。拉动将拉动所有提交,包括它们的依赖项 - 它不会挑选单个提交。

因此,如果您想请求仅拉取您的提交,并且同一分支中有其他人的提交,您必须首先将您的提​​交分开到不同的分支中。

于 2013-11-20T08:16:21.443 回答
8

除了 Robin 的回答,推荐的方法是每个开发人员根据开发分支为他们工作的每个功能创建一个分支。然后创建的拉取请求准确地代表了代表特定功能或更改的更改。

一旦拉取请求被审查并合并到开发分支中,您用于合并到发布分支的过程就会被简化并与审查过程分开。

Stash 的分支文档Atlassian 的 git 教程更详细地解释了这些概念。

于 2013-11-21T07:14:28.987 回答
2

跟进:如果您从 dev 分支创建一个新分支,然后从新分支提交拉取请求,它将包括来自 dev 分支的提交。解决方案(或者至少是我们的解决方案)是让每个开发人员从主分支创建分支。

于 2020-03-18T17:28:00.440 回答
1

我目前使用的是这个:

我们有3个分支:

  • 发展
  • 释放
  • 掌握

过程如下:

  1. 对于每个功能,我们从Master创建一个分支。
  2. 为了测试,我们从我们的分支向开发分支发出一个拉取请求。
  3. 完成测试后,我们再次从分支发出拉取请求,但发送到发布分支
  4. 每次发布后,我们都会从 Release 向 Master 发出一个 Pull Request。请注意,这会创建额外的重复提交,这些提交最终会流回 Develop,但通常不会发生实际的文件更改,只有提交。

请注意,在此过程中,开发分支永远不会合并到发布中。毕竟,它将包含一堆来自其他开发人员的代码,这些代码还没有准备好部署。但我的分支将只包含我的代码。

请注意可能会影响您的测试的代码,因为它可能不会同时进入发布分支。实际上,我也想要一些关于这个架构的反馈。

例如,它是这样的:

  • 大师 -> 我的分支
  • 我的分支 -> 开发
  • 我的分支 -> 发布
  • 发布 -> 大师
于 2021-07-30T16:20:30.987 回答