我有以下情况。
答案 0 :(得分:1)
应该从task1的分支中创建task2的分支,即使task1的分支尚未合并到master
分支中。
PR完成后,通常有两种方法可以将task2的分支合并到master分支中:创建PR以直接合并task2的分支; 将task2的分支重新建立到master分支上,然后创建PR 。
让我们用图形来说明这两种方式。假设feature1
是task1的分支,而feature2
是task2的分支。提交历史如下:
...---A---B---C master
\
D---F---G feature1
由于task2依赖于task1,因此您应该从feature2
分支创建feature1
分支。然后在feature2
分支上开发并提交更改。提交历史将为:
...---A---B---C master
\
D---F---G feature1
\
H---I feature2
当PR完成将feature1
分支合并到master
分支中时,提交历史将为(commit M
是合并提交):
...---A---B---C-------M master
\ /
D---F---G feature1
\
H---I feature2
要创建另一个PR以将feature2
分支合并到master
分支中,通常有以下两种方法:
完成task2(feature2
分支)的工作后,您可以创建另一个PR以将feature2
直接合并到master
分支中。
PR完成后,提交历史将为:
...---A---B---C-------M-------N master
\ / /
D---F---G---H---I feature2
|
feature1
由于master
分支已经包含对task1的更改(feature1
分支),因此可以通过以下命令将feature2
分支基于master
分支:
git rebase --onto master feature1 feature2
那么提交历史将是:
H'---I' feature2
/
...---A---B---C-------M master
\ /
D---F---G feature1
然后您可以创建PR,以将feature2
分支合并到master
分支中。 PR完成后,提交历史记录将为:
H'---I' feature2
/ \
...---A---B---C-------M--------N master
\ /
D---F---G feature1
答案 1 :(得分:0)
理想情况下,如果您正确设计Git工作流程/冲刺,就不会发生这种情况。如果您确实经常看到这种情况,那么我认为您应该将其视为工作流问题。
如果必须处理此问题,则可以尝试的一种方法是将任务2分支重新建立在任务1分支上。也就是说,将任务2分支视为对任务1的刺激,而不是对主人的刺激。这是您可以尝试的一些Git代码:
# from task1
git checkout -b task2
# work work work ... complete the task
git rebase task1
# then end task2 by merging into task1, not master
git checkout task1
git merge task2
您也可以使用上述内容的变体。我建议的基本思想是使任务1成为任务2的新目标分支。