撤消 git pull --rebase?

Posted

技术标签:

【中文标题】撤消 git pull --rebase?【英文标题】:Undo a git pull --rebase? 【发布时间】:2012-06-10 01:16:30 【问题描述】:

我刚刚跑了

git pull --rebase

忘记指定“原点”。看起来 git 从所有不同的分支中拉出来。有没有办法从这里恢复我的回购以撤消拉动?

谢谢

【问题讨论】:

【参考方案1】:

git pull 操作之后,ORIG_HEAD 应该指向HEAD 的前一个值。您应该能够:

git reset --hard ORIG_HEAD

回到你在pull 操作之前开始的地方。你可以运行:

git show ORIG_HEAD

在运行reset 命令之前准确查看ORIG_HEAD 指向的位置。

另一种解决方案是基于ORIG_HEAD 创建一个新分支:

git checkout -b newbranch ORIG_HEAD

验证事情是否符合您的预期,然后删除旧分支并重命名new branch

另请参阅 this question,了解有关 HEADORIG_HEAD 的讨论以及引用同一事物的替代语法。

【讨论】:

【参考方案2】:

使用git reflog

你会看到一大堆来自过去的 HEAD 提交。

最安全的方法是在新分支中签出您需要的 HEAD 并从那里继续

git checkout -b phew HEAD@x # fill in the number of the commit you need.

【讨论】:

谢谢你救了我,我以为我失去了一切。【参考方案3】:

从一个无聊/愚蠢/垂死的变基中恢复

不小心我跑了git pull origin master --rebase 而不是git pull origin develop --rebase

我只是想恢复变基后发生的事情并回到最后一次提交。我没有推送到远程分支。

这是一个很大的错误,想要退出合并。

退出合并的最快方法是git rebase --abort

【讨论】:

以上是关于撤消 git pull --rebase?的主要内容,如果未能解决你的问题,请参考以下文章

撤消 git pull,如何将 repos 恢复到旧状态

Git Book 中文版 - Git的撤消操作 - 重置, 签出 和 撤消

如何撤消“git重置”?

Git中都有哪些难以/不可能撤消的操作? [关闭]

markdown 在git rebase / git merge之后撤消

撤消 git 自动合并