长话短说,我有一个远程分支(我的远程分支),该分支在CI中未通过某些测试。有人告诉我要改组以掌握此问题。
我做了以下事情:
git checkout master
git pull
git checkout my-remote-branch
git rebase master
git push
那时候我遇到了一个错误:
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
所以接下来我做了:
git pull --set-upstream-origin my-remote-branch
git push
这种情况造成了混乱。我的拉取请求现在有大量的提交(所有提交均来自主请求),因此历史记录都被弄乱了,并且对拉取请求的更改文件有误导性。这似乎比简单的还原更复杂,因为我不能只还原到一个提交,所有提交都与master交织在一起。
显然,我应该要做的是:
git fetch origin master
git rebase -I origin/master
git push —force
有没有办法消除我的错误(撤消合并,仅从分支中的历史记录中删除提交),以便我可以执行应该执行的步骤?
答案 0 :(得分:0)
您可以使用
撤消上一次提交git checkout my-remote-branch
git reset --hard HEAD~1
如果最后一次提交不是“不好的”提交,则可以使用git log
查找最后一次好的提交的最后一个哈希,然后执行
git reset --hard HASH
(用相应的哈希替换HASH
)。
之后,您回到了起点,可以做您认为正确的事情。