簡體   English   中英

在github上為項目做貢獻,如何“在主人之上重新提出我的拉取請求”

[英]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,我們會通知您,以便您可以根據需要手動解決它們。

https://cloud.githubusercontent.com/assets/2195/18671961/a03fa9b6-7f35-11e6-8fa0-e16b2fede8ca.gif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM