使用 --hard 选项撤消 git reset
如果你的分支对应的remote-tracking分支在reset之前和你当前的分支同步,可以调用下面的命令来撤销git reset:(假设remote的名字是oroirn,默认是oroirn):
git reset --hard oroirn/<branch-name>
git reset 命令
git reset 命令用于撤消更改。
它有点类似于 git checkout ,因为它们都在 HEAD 上运行。
git checkout 命令专门作用于 HEAD 引用指针,而 git reset 传递 HEAD 引用指针和当前分支引用指针。
请注意,当 <commit> 之后有快照时,我们不应使用 git reset <commit>,这些快照已移至公共存储库。
当我们发布提交时,请记住其他团队成员也依赖它。
删除团队其他成员正在开发的提交会导致很多问题。
最好删除本地更改。
每个人都会犯错误,任何版本控制系统最有用的功能之一就是撤消更改的系统。
其中我们将获得一种简单而直接的方法来撤消 git reset。
假设你错误地运行了 git reset HEAD~1,它已经从你的本地分支中删除了最新的提交,现在你想要恢复那个提交。
下面,我们将演示如何做到这一点。
使用 git log 撤消 git reset
查看引用更新
Git 保留所有引用更新的日志(例如,签出、重置、提交、合并)。
运行 git reflog 命令来查看它们:
git reflog
输出可能是这样的:
49ab751 HEAD@{0}: reset: moving to HEAD~1 b53c078 HEAD@{1}: Change the length ...
撤消 git 重置
运行以下命令以撤消错误并在重置之前返回提交:
git reset HEAD@{1}
git三棵树
Git 使用三个不同版本的文件来添加和检索提交的工作流程。
这些系统包括:
- HEAD(提交历史)
- 暂存区
- 工作目录
HEAD 指向分支,就像默认情况下的 master 分支。
HEAD 是一个引用,它更改并指向当前签出的分支,并通过该分支指向它的最后一次提交。
暂存区或者索引是准备提交的地方。
暂存区将工作树中的文件与存储库中的文件进行比较。
在工作树中进行更改时,暂存区会在文件提交之前将文件标记为已更改。
工作树或者工作目录是特定快照的版本或者检出项目的特定提交。
工作目录代表计算机文件系统上可供代码编辑器应用更改的文件。
这是 HEAD 在任何指定时刻指向的 Git 历史版本。
这些树中的每一个都做不同的工作,但它们对 Git 操作同样重要。