我分叉了一個項目,做了改變(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