我分叉了一个项目,做了改变(C1),并提出了仍处于待决状态的请求。一个星期后,我想给变化(C2)另一个拉请求。Github - 需要帮助给予拉请求
同时,上游(我从中分叉)得到很多变化。所以我想同步我的主与上游,并需要提供更改C2的拉请求单(无需添加更改C1,因为我已经给这个单独的拉请求)。
注意:我没有任何分支。我在我的主人承诺C1,并给予 拉请求。做了改变C2。但是这一次,我不会在哪里提交C2以及如何在不添加C1的情况下提供请求 请求。
我分叉了一个项目,做了改变(C1),并提出了仍处于待决状态的请求。一个星期后,我想给变化(C2)另一个拉请求。Github - 需要帮助给予拉请求
同时,上游(我从中分叉)得到很多变化。所以我想同步我的主与上游,并需要提供更改C2的拉请求单(无需添加更改C1,因为我已经给这个单独的拉请求)。
注意:我没有任何分支。我在我的主人承诺C1,并给予 拉请求。做了改变C2。但是这一次,我不会在哪里提交C2以及如何在不添加C1的情况下提供请求 请求。
如果您在自己的分公司完成C2,所有你需要做的是:
需要注意的是,如果你在上游/大师的顶底垫C1分公司,现有的拉请求将被自动更新!另请参阅“How to do a Github pull request?”。
我致力于在我的主人
C1
又给拉请求。
我做了更改C2
,不知道在哪里提交,以及如何在不添加C1
的情况下发出拉取请求。
这是我的问题。
所以,你必须:
y--y--y--y (origin/master)
\
x--C1--C2 (master)
首先,不要做任何变基上的origin/master
顶部,这将触发对现有的拉请求更新(但此时,与C1
和C2
从你衍合master
,正如我在pull request tips提到,在第二点)
git checkout master
git branch bC2
git reset --hard master C2~
git tag C2base master
如果C2
由几个连续的提交,取代C2~
由第一提交C2
系列,然后是“~
”。
这个假设C2
提交按照C1
提交。
确保您没有任何工作正在进行中(未提交):'reset --hard
'会清除这些内容。
请注意,标签C2base
引用C2
之前的提交。我们将在下面需要它。
y--y--y--y (origin/master)
\
x--C1 (master)
^\
| --C2 (bC2)
(C2base)
然后,git pull --rebase origin
将重播之上origin/master
你的主人。
y--y--y--y (origin/master)
\ \
| x'--C1' (master)
|
x--C1
^\
| --C2 (bC2)
(C2base)
注意如何C1
送过来复制,并且仍然通过bC2
分支引用。
最后,确保你的bC2
分支上的origin/master
顶部做有很好:
git rebase --onto origin/master C2~ bC2
git tag -d baseC2
它给你:
C2' (bC2)
/
y--y--y--y (origin/master)
\
x'--C1' (master)
(旧C1
承诺通过任何不再被引用,所以它消失在reflog,它可以用于revert improper rebase, for instance)
而你n ow可以从bC2
分支完成您的请求,该分支仅包含C2
提交!
在每个PR之前,您应该与主分支保持同步。这意味着PR的顺序对你来说并不重要。最终主分支(和可能的新分叉)将包含所有更改。
在[我的答案](http://stackoverflow.com/a/17447104/6309)中添加的详细步骤是否帮助您在不包含'C1'的情况下对'C2'进行拉取请求? – VonC
我还没试过。但是你解释的方式是有道理的。我认为你在这方面有着丰富的经验。 :) – user10