我正在我的本地分支上做一些改变,当我完成后,我把所有东西推到远程brach。在将分支与开发合并之前,我认为我应该做一个反思,因为其他人已经在那里合并了很多代码。当我做了rebase并解决了一些冲突时,我推到了远程分支。不幸的是,我解决冲突的方式是错误的,所以现在我需要在rebase发生之前返回并将远程分支更新到新状态。
我尝试了什么
重置头
git reset --hard HEAD @ {x} //其中x是在rebase之前的头
这可以恢复我本地分支上的更改,但后来我不知道如何使远程分支更新,因为它不会创建可以推送到远程的新提交。
答案 0 :(得分:5)
您不应该重写远程存储库的历史记录,因为如果
你不仅会遇到必须解决问题的问题,而且还有其他推动变革的人。所以,除非你能确定没有人拉它,否则不要强行推送。
相反,你应该使用
恢复提交>> git revert HEAD@{y} # where HEAD@{y} is the faulty commit
如果合并的话,只有一次提交很麻烦。
如果rebase将几个提交转换到主分支上,则需要执行
>> git revert --no-commit HEAD
>> git revert --no-commit HEAD~1
>> git revert --no-commit HEAD~2
...
>> git revert --no-commit HEAD@{x}
>> git commit -m "Sorry folks for the big mess I made"
所有HEAD~y
都是HEAD@{x}
和HEAD
之间的提交。
这将在一次大型提交中有效撤消所有受影响的提交。