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

时间:2016-04-14 18:19:44

标签: git merge branch commit

您提交拉取请求以将Branch A合并到母版中。

虽然这有待处理(1小时左右)并且您想在等待时使用分支A的待处理功能,但您可以Branch B

Branch B应该Branch A

的分支

或应Branch B成为master的分支,然后合并Branch A

2 个答案:

答案 0 :(得分:1)

简短回答:使用另一个pullrequest可能很危险。您仍然可以开发B功能,有两种方法可以实现:

  • A分支中开发它并更新原始的pull-request,以便它包含这两个功能,或者
  • 在临时分支中开发它(可以在任何你喜欢的地方),但在合并A之后将你的工作合并到合并上。

答案很长

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

  • 从某个主提交A
  • 创建分支a0
  • 代码功能A
  • 合并A以及稍后的主提交b0并在那里创建分支B
  • 代码功能B
  • 在拉动请求合并期间将A合并为主人
  • 现在合并B与主人将是纵横交错的:

criss-cross merge diagram

您可以修复此确切问题。例如,您可以将master合并到A,将其推进到该合并,然后启动分支B。然后B的后续合并将不会纵横交错:

criss-cross merge prevented diagram

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

答案 1 :(得分:0)

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

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的拉取请求也不会发生冲突。