在新分支中使用挂起的分支更改的正确过程

Correct procedure to use pending branch changes in a new branch

您提交合并请求以将 Branch A 合并到 master 中。

虽然这是待处理的(大约 1 小时)并且您想在等待期间使用分支 A 的待处理功能,但您可以 Branch B

Branch B 应该是 Branch A

的分支

或者 Branch B 应该是 master 的分支然后合并 Branch A

认为这似乎是基于意见的。您可能可以按照以下步骤操作:

git checkout Branch A

然后创建新分支

git checkout -b Branch B  // creating off branch A

将最新的主代码也拉到分支 B 以确保您是最新的

git pull origin master //making sure master is merged to the new branch

这样从 B 到 master / Branch A 的拉取请求也不会有冲突。

简答:使用另一个 pullrequest 可能很危险。那么你仍然可以开发你的 B 功能,有两种方法可以做到:

  • A 分支中开发它并更新您的原始拉取请求,以便它包含这两个功能,或者
  • 在临时分支(可以是任何你喜欢的地方)开发它,但在合并 A 到 master 之后将你的工作重新设置到该合并上。

长答案:

这里要注意的一件事(但不是唯一的)是 criss-cross merge。它可能会导致冲突解决问题,有时甚至会默默地恢复一些更改。 (Git 声称对这种情况进行了一些特殊处理,但我不知道它有多好。)即使在你的简单情况下也可能发生,步骤如下:

  • 从某个主提交创建分支 A a0
  • 代码特征A
  • 合并 A 和一些后来的主提交 b0 并在那里创建分支 B
  • 代码特征B
  • 在拉取请求合并期间合并 A 到 master
  • 现在合并 B 与 master 将是交叉的:

您可以解决这个问题。例如,您可以将 master 合并到 A,将其推进到那个合并,然后开始分支 B。那么后续的B的merge就不会纵横交错了:

但是还有更多可能出现的问题。您可以有多个 B 分支。您可以有多个 A 分支。您可能需要在审查后更新 A,而您已经在执行 B 功能。 A 可能根本不正确,应该以其他方式完成,或者根本不这样做。您可能会尝试分析每种情况下的修订图并预测可能出现的问题。但是,如果您在团队中工作,您可能需要一个简单的策略来防止可能出现的问题。许多团队采用的这种策略的最简单情况是,他们不在彼此之上使用 功能分支,而是从某个主提交开始所有这些分支。