使用git reset --hard 是将磁盘文件也删除

时候使用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天以后。

原文:https://www.cnblogs.com/wwjldm/p/10456067.html

git 撤销全部的commit_恢复git撤销commit的代码相关推荐

  1. 【Git笔记3】关于撤销、删除、恢复的那些事儿

    在跻身于"国庆抢票大战"的我们,不要忘记学习,今天接着上篇 [Git笔记2]必知习惯和如何版本回退,继续开干!一起来瞅瞅如何撤销没有add的修改,如何撤销以及add到暂存区的修改, ...

  2. Git已经在本地提交过文件了,但又给撤销了,恢复已经撤销的内容

    Git,我已经在本地提交过文件了,也就是已经执行了git commit -m "xxx",但提交完之后又给撤销了,撤销的还能回来嘛? 这种情况仍然有机会恢复它.撤销提交的方法取决于 ...

  3. GIT入门笔记(11)- 多种撤销修改场景和对策--实战练习

    1.检查发现目前没有变化 $ git status On branch master nothing to commit, working tree clean $ cat lsq.txt 2222 ...

  4. Git——撤销和删除操作【git restore / git rm 】

    前言:针对文件的撤销修改或者删除文件操作一般有以下几种情况: 1. 撤销文件修改 1.1 git restore – filename - 工作区文件改动未添加到暂存区   当修改后的文件还未放到暂存 ...

  5. Git快速入门-git stash 暂存变更,git reset 撤销commit,git revert 回退远程版本库

    Git快速入门系列文章 - Git快速入门-安装配置篇 - Git快速入门-常用命令之独奏篇 - Git快速入门-常用命令之交响乐篇 - Git快速入门-git stash 暂存变更,git rese ...

  6. linux git 撤销删除文件,删除文件以后,如何通过git撤销删除的文件,不提交到远端代码库...

    检查状态,看看发生了什么: $ git status On branch master Changed but not updated: (use "git add/rm ..." ...

  7. git撤销单个文件的修改_git 撤销修改以及删除文件

    撤销修改 1.如果当你修改了代码,然后又发现修改错误以后,想撤销前面的操作的时候该怎么办呢? 既然错误发现得很及时,就可以很容易地纠正它.你可以删掉最后一行,手动把文件恢复到上一个版本的状态.如果用 ...

  8. git版本回退命令_git 版本回退 撤销 删除

    1 未使用 git add 缓存代码时(在工作区的时候) 可以使用 git checkout -- filepathname (比如: git checkout -- readme.md  ,不要忘记 ...

  9. git 撤销刚才的rebase_撤消git rebase

    回答(15) 2 years ago 最简单的方法是找到分支的头部提交,因为它是在reflog中的rebase开始之前... git reflog 并将当前分支重置为它(关于在使用 --hard 选项 ...

最新文章

  1. Linux 守护进程的原理与实现
  2. 为IDOC创建tRFC连接
  3. python(numpy,pandas7)——pandas的数据选择
  4. 博客园如何使用MarkDown
  5. 阿里云 超级码力在线编程大赛初赛 第2场 题目3. 五字回文
  6. 基于mono和C#运行的cms产品
  7. 腾讯QQ空间g_tk算法
  8. 移动端禁止页面缩放问题
  9. Nodejs 使用express模块创建一个服务器
  10. before和after怎么区分_触发器before和after的区别
  11. Azure Services Bus(服务总线)中的工作流(workflow)
  12. C语言 第二章 数据类型、变量和输入函数
  13. Libmicrohttpd简介
  14. java webrtc视频会议_JAVA webRtc的实现视频会议系统
  15. C#会员管理系统源码 会员消费管理系统源码
  16. vt功能对计算机有影响吗,电脑开vt有什么坏处
  17. 最大公约数和最小公倍数(深入理解)
  18. 关于java web开发中的很多小问题集锦
  19. 港科夜闻丨香港科大获越秀集团捐赠港币一亿元支持大学发展
  20. windows7声卡驱动修复压缩包

热门文章

  1. JAVA写出来的塔防能有多好玩?......真香!
  2. Soul网关发布2.2.0:让高性能网关变得如此简单!
  3. 信不信这29 个阿里开源项目里肯定有你用过的?
  4. 京东数科首次公开:强一致、高性能分布式事务中间件JDTX
  5. 【注意】关于Redis存在远程命令执行漏洞的安全公告
  6. Spring Boot整合 Sentry 监控项目日志
  7. Jenkins:配置信息变更历史
  8. 阿里巴巴Java开发规约的IDEA插件使用
  9. python反转单链表
  10. 查看网页js数据接口