恢复 git reset -hard 的误操作
来源:互联网 发布:我的第一本编程书 编辑:程序博客网 时间:2024/04/20 18:59
有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge。甚至一些很小的操作,例如删除一个分支,我都担心数据丢失。
不久之前,我在做一些大动作(rebasing)之前,我总是备份整个版本库,以防万一。直到最近我才发现git的历史记录是不可修改的,也就是说你不能更改任何已经发生的事情。你做的任何操作都只是在原来的操作上修改。也就是说,即使你删除了一个分支,修改了一个提交,或者强制重置,你仍然可以回滚这些操作。
让我们来看一些例子:
$ git init
$ touch foo.txt
$ git add foo.txt
$ git commit -m "initial commit"
$ echo 'new data' >> foo.txt
$ git commit -a -m "more stuff added to foo"
你现在看git的历史记录,你可以看到两次提交:
$ git log
* 98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit
现在让我们来重置回第一次提交的状态:
$ git reset --hard b7057a9
$ git log
* b7057a9 (HEAD, master) initial commit
这看起来我们是丢掉了我们第二次的提交,没有办法找回来了。但是 reflog 就是用来解决这个问题的。简单的说,它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会被记录在reflog中。
$ git reflog
b7057a9 HEAD@{0}: reset: moving to b7057a9
98abc5a HEAD@{1}: commit: more stuff added to foo
b7057a9 HEAD@{2}: commit (initial): initial commit
所以,我们要找回我们第二commit,只需要做如下操作:
$ git reset --hard 98abc5a
再来看一下 git 记录:
$ git log
* 98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit
所以,如果你因为reset等操作丢失一个提交的时候,你总是可以把它找回来。除非你的操作已经被git当做垃圾处理掉了,一般是30天以后。
不久之前,我在做一些大动作(rebasing)之前,我总是备份整个版本库,以防万一。直到最近我才发现git的历史记录是不可修改的,也就是说你不能更改任何已经发生的事情。你做的任何操作都只是在原来的操作上修改。也就是说,即使你删除了一个分支,修改了一个提交,或者强制重置,你仍然可以回滚这些操作。
让我们来看一些例子:
$ git init
$ touch foo.txt
$ git add foo.txt
$ git commit -m "initial commit"
$ echo 'new data' >> foo.txt
$ git commit -a -m "more stuff added to foo"
你现在看git的历史记录,你可以看到两次提交:
$ git log
* 98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit
现在让我们来重置回第一次提交的状态:
$ git reset --hard b7057a9
$ git log
* b7057a9 (HEAD, master) initial commit
这看起来我们是丢掉了我们第二次的提交,没有办法找回来了。但是 reflog 就是用来解决这个问题的。简单的说,它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会被记录在reflog中。
$ git reflog
b7057a9 HEAD@{0}: reset: moving to b7057a9
98abc5a HEAD@{1}: commit: more stuff added to foo
b7057a9 HEAD@{2}: commit (initial): initial commit
所以,我们要找回我们第二commit,只需要做如下操作:
$ git reset --hard 98abc5a
再来看一下 git 记录:
$ git log
* 98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit
所以,如果你因为reset等操作丢失一个提交的时候,你总是可以把它找回来。除非你的操作已经被git当做垃圾处理掉了,一般是30天以后。
0 0
- 恢复 git reset -hard 的误操作
- 恢复 git reset -hard 的误操作
- 恢复 git reset -hard 的误操作
- 恢复 git reset -hard 的误操作
- 恢复 git reset -hard 的误操作
- 恢复 git reset -hard 的误操作
- 恢复 git reset -hard 的误操作
- 恢复 git reset -hard 的误操作
- 恢复 git reset -hard 的误操作
- Git Reset hard误操作回滚恢复代码
- 恢复 git reset -hard 的误操作
- 恢复 git reset --hard *删除的文件
- linux git reset –hard的误操作解决方法
- git reset -hard操作的找回
- 如何恢复 git reset --hard 删除的文件
- 【转】如何撤销git reset --hard操作
- git add后 未commit git reset --hard如何恢复
- 使用git reset --hard 命令后,怎么再恢复你的数据
- 牛客网刷题之把字符串转换成整数
- 安卓数据库约束性问题
- ios错误汇总1:codesign failed with exit code 1
- android eclipse lint删除无用资源文件
- hadoop写文件流程分析
- 恢复 git reset -hard 的误操作
- ubuntu16.04安装Adobe Flash Player插件
- eclipse中一些常见问题的解决方法
- 常用图像数据集大全(分类,跟踪,分割,检测等)
- SpringMVC用JsonSerialize日期转换
- sql注入
- 你为什么还不够优秀?
- 欧拉计划
- 汇编实验——分类统计字符个数count_char