在新分支中使用挂起的分支更改的正确过程
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
可能根本不正确,应该以其他方式完成,或者根本不这样做。您可能会尝试分析每种情况下的修订图并预测可能出现的问题。但是,如果您在团队中工作,您可能需要一个简单的策略来防止可能出现的问题。许多团队采用的这种策略的最简单情况是,他们不在彼此之上使用 功能分支,而是从某个主提交开始所有这些分支。
您提交合并请求以将 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
可能根本不正确,应该以其他方式完成,或者根本不这样做。您可能会尝试分析每种情况下的修订图并预测可能出现的问题。但是,如果您在团队中工作,您可能需要一个简单的策略来防止可能出现的问题。许多团队采用的这种策略的最简单情况是,他们不在彼此之上使用 功能分支,而是从某个主提交开始所有这些分支。