(相关命令:git reset、git log、git reflog,要看文档的话用--help。)

这是一次愚蠢的行为之后的总结……避免我之后忘记了解决方法【逃

get reset --hard是一个非常危险的行为。

比如该项目,git log显示:

$ git log
commit cc53a1925fb7895ad88d155a43f3012249615919 (HEAD -> master)
Author: ***
Date: Mon Mar 12 16:47:00 2018 +0800 version commit 1ca078c22c4b7d5c79214069cb1be8d4122dbe7e
Author: ***
Date: Mon Mar 12 16:46:46 2018 +0800 version

此时执行git reset --hard HEAD^(回退为HEAD前一次提交):

$ git reset --hard HEAD^
HEAD is now at 1ca078c version

此时再次查看git log,发现version 1提交没有了。git log只查看当前提交的祖先。

$ git log
commit 1ca078c22c4b7d5c79214069cb1be8d4122dbe7e (HEAD -> master)
Author: ***
Date: Mon Mar 12 16:46:46 2018 +0800 version

此时可以git reflog,即查看每一次HEAD的变化,并reset到需要的commit。

$ git reflog
1ca078c (HEAD -> master) HEAD@{}: reset: moving to HEAD^
cc53a19 HEAD@{}: commit: version
1ca078c (HEAD -> master) HEAD@{}: commit (initial): version $ git reset cc53a19 --hard
HEAD is now at cc53a19 version

或者用git log -g(即--walk-reflogs)查看每一次HEAD的变化的日志,并进行reset。(代码略

错误的git reset操作之后的补救措施的更多相关文章

  1. git学习(六) git reset操作

    git reset 操作 git reset git reset HEAD 文件名 移除不必要的添加到暂存区的文件 git reset HEAD^ 或者 commitid 去掉上一次的提交 git r ...

  2. git学习(十) idea git reset 操作

    git reset 是回滚操作,在 idea 中使用如下: Reset Type 有三种: Mixed 默认方式,只保留源码,回退 commit 和 index 信息 Soft 回退到某个版本,只回退 ...

  3. <转载> 撤销 git reset 操作

    https://blog.csdn.net/mhlghy/article/details/84786497

  4. git reset --hard 操作后的数据恢复

    在进行正文之前先简单介绍下git reset 命令 git reset git reset 命令用于改变当前的仓库状态,简单的场景用例:假设一次修改了两个文件,然而需要对这两个文件分别进行两次提交,在 ...

  5. 代码回滚:git reset、git checkout和git revert区别和联系

    git reset.git checkout和git revert是你的Git工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文件. 因为 ...

  6. git文件操作

    git下载地址: https://git-scm.com/download mac 直接使用brew下载brew install git 1Git一般工作流程: 1.在工作目录创建版本库 2.在工作目 ...

  7. git push 错误,回滚 push操作

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 0.记一次使用git push后,覆盖了同事代码的糗事 前言: ​ 都在WebStorm中操作,Idea或者PyCharm同理 ​ 为了高度还原尴尬 ...

  8. Git撤销&回滚操作(git reset 和 get revert)

    转自:https://blog.csdn.net/asoar/article/details/84111841 git的工作流 工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 ...

  9. 撤销git reset soft head操作

    一不小心在eclipse的git库中执行了Reset Soft(HEAD ONLY)操作,不料界面中竟然没有找到撤销方法(于是心中五味俱全,经过一番折腾,无果还是回归Git本身),最终通过命令行,很快 ...

随机推荐

  1. TestGc finalize()

    package com.gc; public class TestGc { public static void main(String[] args) { Man man = new Man(&qu ...

  2. TypeScript学习小结

    TypeScript是什么 TypeScript是由微软公司开发的一个开源JavaScript的超集,主要提供了类型系统和对ES6的支持,可以编译成纯JavaScript,主要就是对JavaScrip ...

  3. Partition Array by Odd and Even

    Partition an integers array into odd number first and even number second. Example Given [, , , ], , ...

  4. 关于:Mac下IDEA更换Maven仓库

    一.MAC安装配置maven环境变量 1.下载maven包: 下载链接:

  5. (转)基于keepalived搭建MySQL的高可用集群

    基于keepalived搭建MySQL的高可用集群  原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...

  6. Android开发环境搭建步骤-【Android】

    本教程是android开发环境在windows下的安装配置,经本人测试完全正确无误.这个教程是史上最详细的android开发环境搭建教程. 工具/原料 Eclipse 3.7.0.Java Jdk6. ...

  7. Java的IO输入输出流类的介绍(有图)

    一.字节流 1.InputStream/OutputStream(输入流与输出流几乎一一对应) 读取的方法   int read()   int read(byte[] buffer)   int r ...

  8. Java入门系列-21-多线程

    什么是线程 在操作系统中,一个应用程序的执行实例就是进程,进程有独立的内存空间和系统资源,在任务管理器中可以看到进程. 线程是CPU调度和分派的基本单位,也是进程中执行运算的最小单位,可完成一个独立的 ...

  9. java并发编程(1)并发程序的取消于关闭

    一.任务的取消于关闭 1.中断Thread 1.每个线程都有一个boolean类型的中断状态.true则是中断状态中 interrupt:发出中断请求:isInterrupt:返回中断状态:inter ...

  10. 公司管理系列--Facebook 如何化茧成蝶[转]

    拒绝传统,看 Facebook 如何以三大法宝化茧成蝶:人才吸引.工程师文化和项目开发流程   我将结合之前在Facebook的四年工作经验,介绍Facebook创新的管理方法以及整个工程文化形成的方 ...