我打算在一个功能上做更多的工作,在编码之前我跑了git pull --rebase upstream master。然后跑了git push origin feature-branch; 这导致了我随后运行的那些“快进”错误之一git pull origin feature-branch。之后,我修复了合并冲突并git push origin feature-branch再次运行。现在我的 pr from feature-branchtomaster被其他人的提交污染了。我注意到以前有人问过这个问题,但从未回答过。
有人可以解释我做错了什么,也许如何解决它?
E.A*_*ood 13
我想到了:
记下您要保存的 PR 中所有提交的 git commit 哈希(即您的提交)。
然后运行以下命令:
git fetch upstream
git reset --hard upstream/master
git cherry-pick <hash 1>
git cherry-pick <hash 2>
// cherry-pick all of your commits then:
git push -f origin your-branch
Run Code Online (Sandbox Code Playgroud)
它应该自动修复你的 PR
如果您当前的分支有您想要保留(您自己的)的提交与您不想要的提交(由变基添加的提交)混合在一起,您可以使用git rebase --interactive再次编辑您的分支并仅保留您选择的提交。
首先,找到您可能要编辑的最后一个提交之前的提交的哈希值。如果您的分支最初是基于的master,则可以选择返回的一个好的提交git merge-base HEAD master。
接下来,启动从当前提交到旧提交的交互式变基:
git rebase --interactive f1c3d284
Run Code Online (Sandbox Code Playgroud)
您的文本编辑器将弹出代表分支中每个提交的行,并在其下方显示来自 Git 的说明。正如说明所述,将代表您不想要的提交的每一行更改pick为。drop当您保存并关闭文档时,将根据这些说明重建当前分支。