我打算在一个特性上做更多的工作,在编写代码之前我运行了git pull --rebase upstream master。然后运行git push origin feature-branch;这导致了其中一个“快速转发”错误,在其中我运行了git pull origin feature-branch。在此之后,我修复了合并冲突,并再次运行git push origin feature-branch。现在,我从feature-branch到master的公关被其他人的提交污染了。我注意到以前有人问过这个问题,但从来没有问过answered。
有人能解释我做错了什么吗?也许该怎么解决?
发布于 2018-06-10 07:26:42
我想出来了:
在要保存的PR (即提交)中,写下所有提交的git提交散列。
然后运行以下命令:
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它应该会自动修复你的公关
发布于 2018-06-11 15:34:52
如果您当前的分支有您想要保持(您自己的)与您不想要的提交(由重基添加的提交)混合的提交,您可以使用git rebase --interactive再次编辑您的分支,并且只保留您选择的提交。
首先,在最后一个要编辑的提交之前找到提交的散列。如果您的分支最初是基于master的,那么一个很好的选择是由git merge-base HEAD master返回的。
接下来,启动从当前提交到旧提交的交互式重基:
git rebase --interactive f1c3d284您的文本编辑器将弹出代表分支中每个提交的行以及下面Git的说明。正如说明所述,对于表示不希望的提交的每一行,请将pick更改为drop。保存和关闭文档时,将根据这些说明重新生成当前分支。
https://stackoverflow.com/questions/50780902
复制相似问题