我在github上創建了一個倉庫。我做了一些修改並做了一個拉取請求。如何在GitHub中執行一個pull請求,並在分叉版本庫的master分支中只提供最新的提交
現在我做了一些其他更改並希望做一個新的拉取請求,但在執行拉取請求之前的預覽屏幕上,它也顯示了舊的提交(那些已被接受的提交)。
如何僅選擇分叉存儲庫的主分支中的最新提交,以便我可以僅通過該提交來執行拉取請求?
我在github上創建了一個倉庫。我做了一些修改並做了一個拉取請求。如何在GitHub中執行一個pull請求,並在分叉版本庫的master分支中只提供最新的提交
現在我做了一些其他更改並希望做一個新的拉取請求,但在執行拉取請求之前的預覽屏幕上,它也顯示了舊的提交(那些已被接受的提交)。
如何僅選擇分叉存儲庫的主分支中的最新提交,以便我可以僅通過該提交來執行拉取請求?
這個答案來自一個同事固定我的問題:
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
的指向你的叉子的例子。 upstream
和origin
只是人們通常如何命名這些引用,但您可以使用任何您想要的名稱。
現在你需要獲得最新的變化:
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
。
這幫了我.. – harsh 2016-01-08 10:24:43
非常感謝!我很長時間以來一直在尋找這個。 – 2016-07-26 19:19:06
您可能可以將提交放在單獨的分支(在第一組提交之前進行分支),假設它們與第一次提交無關。然後,單獨的分支可以成爲拉取請求的目標,並且只包含第二組提交。
可能重複[Github pull request without old commitits](http://stackoverflow.com/questions/5415560/github-pull-request-without-old-commits) – Talljoe 2011-04-06 03:43:45
就像Talljoe說的答案一樣,要麼合併上游主人到您的分支或在上游主人之上重新綁定您的主人。 – 2011-04-06 06:05:48