2011-04-06 34 views
33

我在github上創建了一個倉庫。我做了一些修改並做了一個拉取請求。如何在GitHub中執行一個pull請求,並在分叉版本庫的master分支中只提供最新的提交

現在我做了一些其他更改並希望做一個新的拉取請求,但在執行拉取請求之前的預覽屏幕上,它也顯示了舊的提交(那些已被接受的提交)。

如何僅選擇分叉存儲庫的主分支中的最新提交,以便我可以僅通過該提交來執行拉取請求?

+3

可能重複[Github pull request without old commitits](http://stackoverflow.com/questions/5415560/github-pull-request-without-old-commits) – Talljoe 2011-04-06 03:43:45

+0

就像Talljoe說的答案一樣,要麼合併上游主人到您的分支或在上游主人之上重新綁定您的主人。 – 2011-04-06 06:05:48

回答

46

這個答案來自一個同事固定我的問題:

git checkout -b NEW_BRANCH_NAME LAST_COMMIT_NAME_BEFORE_THE_ONE_WANTED 
git cherry-pick COMMIT_NAME_WANTED 
git push origin NEW_BRANCH_NAME 

然後在GitHub上,你可以爲你做創建的新分支拉請求。

UPDATE

我提出和回答這個問題時,我第一次開始使用Git工作。現在我對它有了更多的瞭解,我想擴展這個答案。

使用叉子時,您可能希望保持它與原始回購相關的更新。所以這是我今天會按照步驟:

git remote add upstream GIT_URL_OF_THE_ORIGINAL_REPO 

現在你有一個叫upstream引用它指向回購。默認情況下,你應該有另一個名爲origin的指向你的叉子的例子。 upstreamorigin只是人們通常如何命名這些引用,但您可以使用任何您想要的名稱。

現在你需要獲得最新的變化:

git fetch upstream 

然後如果你想從upstream你會做到這一點的變化來更新您的叉:

git checkout master //checkout your master branch 
git merge upstream/master //merge changes from the master branch in upstream into the branch you checked out (master) 
git push origin master //if you want to push your updated master to your remote fork 

現在,爲了回答原來的問題,如果我想提交新的PR,我今天要做的是

git fetch upstream //get the latest changes from the original repo 
git checkout -b my_new_feature upstream/master //create a new branch, starting from the master in the original repo 
git cherry-pick WHATEVER_COMMIT_I_WANT //select the commit I want and add it to this new branch 
git push origin my_new_feature //push a new branch to my fork 

然後我會請求my_new_feature分支的新PR。

只需修改/添加文件,然後再做git add FILENAME,git commit -m "Fixing some stuff"即可替換git cherry-pick WHATEVER_COMMIT_I_WANT

+0

這幫了我.. – harsh 2016-01-08 10:24:43

+0

非常感謝!我很長時間以來一直在尋找這個。 – 2016-07-26 19:19:06

4

您可能可以將提交放在單獨的分支(在第一組提交之前進行分支),假設它們與第一次提交無關。然後,單獨的分支可以成爲拉取請求的目標,並且只包含第二組提交。

相關問題