[英]After a git rebase master mistakenly executed git pull instead of git push origin/your_branch -f
可能是由于缺乏睡眠而不是在git rebase master
之后执行强制推送,我执行了git pull
。 现在我的拉取请求被弄乱了,包括来自master的所有提交。 有什么建议可以还原吗?
git reflog
已多次为我提供帮助。
此参考日志记录对本地存储库/分支/参考的更新。
因此,在这种情况下,如果在拉动之前找到所需分支的起始提交,则可以将当前分支重置为该引用。 例如,重置为HEAD@{2}
git reset --hard HEAD@{2}
注意:使用--hard
之前,请务必确定您的操作
运行git pull
只是获取,然后合并上游分支。 假设合并成功,并且您仍然将该分支检出,则应使用以下方法解决此问题:
$ git reset @^1
这会将分支重置为第一个父级,该父级应该是经过重新设置的分支(第二个父级是该分支的旧上游版本的头部。)您可以在进行重置之前进行验证:
$ git log --graph @^1
要么
$ gitk @^1
如果这些看起来理智,则重置应执行此操作。 它不会触摸工作树中的文件,因此您可以查看是否导致任何令人惊讶的更改。 我怀疑不会有任何合并,因为就代码而言,合并可能是无操作的操作(再次假设成功)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.