将带有先决条件的分支推送到GitHub

3

假设我从原始主分支修改了内容,并在时间t1提交了更改,我将其推送到Github(称其为branchA)。然后,我进行了其他更改,并在时间t2提交了更改。我不想将此更改推送到branchA,但我想将其推送到另一个名为branchB的分支。

是否可以将branchA列为branchB的先决条件,以便当我发出拉取请求时,branchB中的差异不包括t1之前提交的更改,换句话说,branchB的差异应仅显示branchAbranchB之间的差异?

Bazaar/Launchpad提供了此选项,但我无法找到Github中类似的功能。(我对git还很新,所以可能这不是他们在Github中执行的操作?)

1个回答

1
这意味着你有:

Local Repo                  Upstream (GitHub Repo)

 .--.--o--x--y branchA   <====> o--o--x branchA
(master)

但你想要:

但是你想:

.--.--o--x branchA      <====> o--o--x branchA
(mast) \
        y branchB        => you can push now

这意味着在将branchB推送到你的分支之前,你需要先将x后面的内容(t1)变基到o上,以便在本地构建branchB。请保留HTML标签。
git checkout branchA                
git branch branchB                  # creates branchB where branchA currently is
git reset --hard origin/branchA     # reset branchA to x
git rebase --onto master x branchB  

为了澄清,如果我这样做,当我的branchA合并到master时,branchBmaster之间的差异将与在branchB中显示的差异相同吗? - user1508893
@user1508893 是的:您正在将该差异基于主分支进行重新定位,以便将其隔离到自己的分支中。 - VonC
谢谢,现在我明白了。这是因为你有使用 git 的经验吗?还是有相关的文档资料可以参考? - user1508893
@user1508893 我在使用git方面有相当丰富的经验(http://stackoverflow.com/tags/git/topusers),并且也使用过`git rebase --onto`(https://dev59.com/t2Uq5IYBdhLWcg3wbv5Z#14504917, https://dev59.com/G2DVa4cB1Zd3GeqPazCF#9192637, http://stackoverflow.com/a/13400050/6309, https://dev59.com/T3E95IYBdhLWcg3wSsGD#2369516)。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接