git - 如何将错误的更改回滚到本地 git 存储库?

标签 git github dvcs

我是 git 的新手,我遇到了一个大问题。即如果我做错了什么,如何将存储库恢复到良好状态。我已经看到如何使用“git revert”来进行更改以撤消以前的更改,并且我已经阅读了很多关于 stackoverflow 和相关位置的问题,但我还没有找到一种简单的方法来简单地说“将我的本地存储库位恢复到我执行 X 之前的状态”,其中 X 可能是提交、 merge 或其他存储库操作。

长话短说:

今天,当我尝试按照 Subtree Merging 上的 ProGit 书中的步骤为第三方依赖项 (Jasmine) 设置子树分支时,这让我特别难过。 .我按照这些步骤设置了一个本地存储库,其中包含一个跟踪远程 Jasmine 存储库的分支。然后我使用 read-tree 将它连接到我的项目中的一个子目录,一切都很好。不幸的是,Jasmine 分支包含一个对非公共(public) URL 的子模块引用,当我试图解决这个问题时,我在跟踪远程存储库的分支上进行了更改(并提交)。无论我做什么来尝试恢复这些提交/更改,我的“git push”命令都无法再工作,因为存储库认为我对 Jasmine 代码进行了更改,并试图通过我正在跟踪的公共(public) URL 将它们推回.

总结:由于我的 git 新手状态,我搞砸了我的部分存储库,并且无法弄清楚如何将它恢复到发出命令之前的原始状态。

无论如何,是否可以通过一些提交/更改来回滚整个存储库,或者我是否只需要再次克隆它并在发生这种情况时重新开始?

最佳答案

使用 git-reflog

git reflog

找出你想返回的版本

git reset HEAD@{n}

(将 n 替换为正确的数字)

如果你有不干净的工作树,也许 git reset --hard 之后;非常小心,因为那些将无法恢复)

关于git - 如何将错误的更改回滚到本地 git 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5695701/

相关文章:

git 记录 1 个分支与另一个分支之间的区别

git:如何在分支之间 merge ,同时保持一些变更集专用于一个分支?

mercurial - 关闭的分支机构如何影响 Mercurial 的业绩?

Git 与 squash merge 但保留网络图

git - 我怎样才能在 GitHub 上为问题设定截止日期?

mercurial - 如何解决 Mercurial (v1.0.2) 中的 merge 冲突?

git - 如何忽略 .gitignore 文件?

Git Bash 在启动和命令时很慢

git - git 重置后完全删除 git 对象

r - 更新从 github 安装的软件包