在一个git rebase master错误地执行了git pull而不是git push origin / your_branch -f

时间:2016-10-13 16:01:49

标签: git github version-control rebase git-rebase

可能是因为git rebase master我执行了git pull后睡眠不足而不执行强制推动。现在我的拉取请求搞砸了,包括来自master的所有提交。 有什么建议可以还原吗?

2 个答案:

答案 0 :(得分:1)

git reflog多次为我救援。

此参考日志记录对本地存储库/分支/引用的更新。

因此,如果在这种情况下直接在pull之前找到所需分支的头部提交,则可以将当前分支重置为该引用。例如,要重置为HEAD@{2}

git reset --hard HEAD@{2}

注意:在使用--hard

之前,绝对确定有关您的操作

Git reflog documentation

答案 1 :(得分:0)

运行git pull只是一个提取,然后是上游分支的合并。假设合并成功并且你仍然检查了这个分支,这样的东西应该修复它:

$ git reset @^1

将分支重置为应该是重新分支的第一个父分支(第二个父分支是分支的旧上游版本的头部。)您可以在执行重置之前进行验证:

$ git log --graph @^1

$ gitk @^1

如果那些看起来很健全,那么重置应该这样做。它不会触及工作树中的文件,因此您可以查看是否会导致任何意外的更改。我怀疑没有,因为合并可能是代码所涉及的无操作(再次,假设它成功了。)