如何在GitHub中只使用我的分叉存储库的主分支中的最新提交来执行拉取请求

Fel*_*ahm 33 git branch fork github pull-request

我在github上分叉了一个存储库.我做了一些修改并做了一个拉取请求.

现在我做了一些其他的更改并想要做一个新的pull请求,但在执行pull请求之前的预览屏幕上它也显示了旧的提交(已经接受的提交).

如何仅在我的分叉存储库的主分支中选择最新提交,以便我可以仅使用该提交执行拉取请求?

Fel*_*ahm 47

这位来自同事的答案解决了我的问题:

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
Run Code Online (Sandbox Code Playgroud)

然后在GitHub上,您可以为您创建的新分支执行拉取请求.

UPDATE

当我第一次开始使用git时,我问了并回答了这个问题.现在我对此了解得更多,我想扩大这个答案.

使用fork时,您可能希望保持更新原始repo.所以这些将是我今天要遵循的步骤:

git remote add upstream GIT_URL_OF_THE_ORIGINAL_REPO
Run Code Online (Sandbox Code Playgroud)

现在你有一个upstream指向该回购的引用.默认情况下,你还应该有另一个被调用的origin,在这种情况下会指向你的fork.upstream而且origin人们通常会如何命名这些引用,但您可以使用您想要的任何名称.

现在您需要获得最新的更改:

git fetch upstream
Run Code Online (Sandbox Code Playgroud)

然后,如果你想更改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
Run Code Online (Sandbox Code Playgroud)

现在,回答最初的问题,如果我想提交一份新的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
Run Code Online (Sandbox Code Playgroud)

然后我会为my_new_feature分支机构申请新的PR .

您可以替换git cherry-pick WHATEVER_COMMIT_I_WANT,只需修改/添加文件,然后做git add FILENAME,git commit -m "Fixing some stuff".