如何在不共享提交历史的情况下从多个分支打开多个拉取请求?

时间:2017-02-09 00:23:59

标签: git github version-control

我已经分叉了一个存储库 - > 创建了一个分支A - > 进行了提交并将更改推送到 - > 然后我从分支A发出拉取请求。 - > 分支A合并了。

现在,我创建了分支B并将提交推送到 - > 从分支B发出了另一个拉取请求,但是这个拉取请求显示了从分支A开始的提交历史记录。只想在其中显示分支B的提交。

2 个答案:

答案 0 :(得分:1)

通常,如果branchA的PR被批准(默认合并策略),当您为branchB创建新PR时,新PR将仅显示branchB的初始提交。正如我在下图中提交的那样。

  A---B---C    branchA
 /         
D---E---F---G  master

在branchA的PR被默认合并策略批准后:

            I        branchB
           /
  A---B---C          branchA
 /         \ 
D---E---F---G---H    master

但是分支A的公关被壁球合并战略批准,当您为分支B创建新PR时,它将显示branchA和branchB的所有历史记录因为branchA并没有真正合并到master分支中。如下图所示,提交A,B,C,我将在分支B的新PR中显示:

            I       branchB
           /
  A---B---C         branchA
 /          
D---E---F---G---H’  master

如果您不希望新PR显示有关branchA的历史记录,您可以将branchB(git rebase --onto master branchA branchB)重新绑定为master并创建PR以将branchB合并为master。

      A---B---C      branchA
     /          
D---E---F---G---H’   master
                \
                 I’  branchB

答案 1 :(得分:0)

根据你的描述,听起来你从分支A的任何地方开始创建分支B.如果你只想保存一个提交,那么解决这个问题的最简单方法可能就是挑选。

首先,保存旧分支B

git branch -m B oldB

然后,切换到主人:

git checkout master

更新您当地的主分行:

git pull --ff-only

从当前主人创建一个新分支B

git checkout -b B

Cherry - 从oldB中选择一个提交:

git cherry-pick oldB

继续推送和发出拉取请求等等。

请注意,如果您在oldB上有多个提交,那么您将不得不做多个樱桃选择,或者一个rebase(可以一次完成整个提交序列)。