一位同事的回答解决了我的问题:
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 上为您创建的新分支发出拉取请求。
更新
当我第一次开始使用 git 时,我提出并回答了这个问题。现在我对它有了更多的了解,我想扩展这个答案。
使用 fork 时,您可能希望根据原始 repo 对其进行更新。所以这些是我今天要遵循的步骤:
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 cherry-pick WHATEVER_COMMIT_I_WANT 替换为仅修改/添加文件,然后执行git add FILENAME、git commit -m "Fixing some stuff"。