[英]Contributing to project on github, how to “rebase my pull request on top of master”
好的,我在github上為一個項目做貢獻。 github upstream
的項目是upstream
,我在github upstream
分叉回購是origin
,我的local
回購在我的計算機上。
git checkout -b feature
# Working on feature
git commit -a -m 'only commit on feature'
然后我提交拉取請求
git push origin master
審查拉取請求並且需要進行不相關的更改。 其他人進行提交並合並到upstream/master
現在我被upstream
維護者要求“在主人之上修改我的拉取請求”
這是我的故事(插入法律和秩序音效).....
我沒有對pull請求進行任何更改,它仍然在分支功能上進行相同的提交。
git checkout master
git fetch upstream
git checkout feature
git rebase master
=> "Current branch feature is up to date."
git push origin feature
=> "Everything up-to-date"
我不明白。 當我將拉動請求推送到origin/feature
后,當我知道有人提交並合並到upstream/master
時,這怎么可能?
誰能告訴我在這種情況下應該采取什么樣的正確程序?
您只顯示上游倉庫的提取。 這實際上並沒有更新任何本地分支機構。 它只會更新您對upstream
的了解 。 您需要確保upstream/master
完全合並到master
,例如使用git pull
,然后重新定位到master
,或者更簡單地只需重新綁定到upstream/master
。
即:
git checkout master
git pull upstream master
git checkout feature
git rebase master
要么
git checkout feature
git rebase upstream/master
更新:
修復本地feature
分支后,您需要將其推回origin
以完成更新請求。 由於你已經推出了一次feature
,你不能再簡單地再次push
,因為一個rebase改變了歷史,而且它不再是一個快速前進。 通常情況下,如果推動失敗並且“非快進”,你可以通過拉動來解決它,但拉動只會結合兩個不同的歷史,這絕對不是你想要的。 這意味着你的舊(pre rebase) feature
分支將與新的(post rebase) feature
組合。 您希望使用新feature
分支的狀態覆蓋 origin/feature
,轉儲舊feature
分支的任何記錄。 這意味着你會想要強制推動發生,即使它不是快進,使用git push -f origin feature
。 注意:強制推動是危險的 ,你可能會失去它的提交。 只有在你完全確定自己知道自己在做什么時才使用它,就像在這里一樣,你有意在drop-rebase feature
分支中刪除舊的,無用的提交。
現在我被上游維護者要求“在主人之上修改我的拉取請求”
請注意,自2016年9月起,維護者可以自己觸發rebase。
請參閱“重新啟動和合並拉取請求 ”
當您選擇新的“Rebase and merge”選項時,來自pull請求的分支的提交將重新定位到基本分支的頂端,然后基本分支本身將快速轉發到此新重定位的頭部。 Rebases會自動將rebased提交的提交者設置為當前用戶,同時保持作者身份信息的完整性。 此操作不會修改pull請求的分支。
如果由於沖突而無法執行rebase,我們會通知您,以便您可以根據需要手動解決它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.