git 找回 git reset --hard HEAD 后的代码
下面方法只针对当你本地代码做了 git add 或则 git commit 后又手贱的重置本地代码到上一个版本,导致本地代码丢失的情况。
如果你没有 git add 命令,而直接 git reset --hard 了,抱歉,代码估计找不回来了。
一,第一种情况 git commit 后重置代码
1,在所在代码文件路径下执行 git reflog 这样就能看到所有的 commit 后的记录。
e294e2a HEAD@{5}: commit: 处理冲突
2d6c4d7 HEAD@{6}: commit (merge): 修改冲突
98e1316 HEAD@{7}: commit: 作业,听力训练和单词训练
aecbb45 HEAD@{8}: pull: Fast-forward
2,如果你很幸运的找到了上次提交的记录,执行 git reset --hard 后面加上 commitID (e294e2a)就可以找回丢失的代码。
二,第二种情况 git add 后重置代码
1,首先 执行 find .git/objects -type f | xargs ls -lt | sed 38q命令, 这样是找到你最近38次git add的记录。38是可以修改的,根据你自己需求修改。
jennydeMacBook-Pro:lestudy jenny$ find .git/objects -type f | xargs ls -lt | sed 38q
-r--r--r-- 1 jenny staff 1717 7 8 10:14 .git/objects/c3/7f638a7ec2475aaf87345075c7a4dad7529bcb
-r--r--r-- 1 jenny staff 1553 7 8 10:14 .git/objects/c2/0726da956cb092d980300915f714d686caaeb1
-r--r--r-- 1 jenny staff 1732 7 8 10:14 .git/objects/5a/c8f3317822a12e8c9596b2896d3968e08003c6
-r--r--r-- 1 jenny staff 1880 7 8 10:14
2,使用git cat-file -p xxxx > 1.md 命令保存add记录对应的代码,其中xxxx是前面通过 find ....命令找到的add文件路径。
需要从 .git/objects/ 开始截取后面的所有路径,并且在截取后的路径,去掉其中的 / 斜杠来组成新的路径。
比如,.git/objects/c3/7f638a7ec2475aaf87345075c7a4dad7529bcb 截取后的就是 c3/7f638a7ec2475aaf87345075c7a4dad7529bcb,然后去掉斜杠就是c37f638a7ec2475aaf87345075c7a4dad7529bcb
最后执行 git cat-file -p c37f638a7ec2475aaf87345075c7a4dad7529bcb > 1.md命令,那么git就会把此条记录所对应的代码保存到 1.md 中。后续你根据代码修改文件名称即可。本次你的代码就找回了。
总结,没事不要 git reset --hard ##
git 找回 git reset --hard HEAD 后的代码的更多相关文章
- git reset --hard HEAD^后显示more?的原因及如何解决
在windows的cmd控制台下操作git,想要回滚到上一次提交,但是输入git reset --hard HEAD^后就显示more? fatal: ambiguous argument 'HEAD ...
- Git 进阶指南(git ssh keys / reset / rebase / alias / tag / submodule )
在掌握了基础的 Git 使用 之后,可能会遇到一些常见的问题.以下是猫哥筛选总结的部分常见问题,分享给各位朋友,掌握了这些问题的中的要点之后,git 进阶也就完成了,它包含以下部分: 如何修改 ori ...
- Git学习01 --git add, git commit , git log ,git status, git reset --hard, head
Git官方提供的快速入门教程:https://try.github.io/levels/1/challenges/1 特点:Git极其强大的分支管理:分布式版本 集中式版本控制系统,版本库是集中存放在 ...
- git add.后回退 代码丢失
记录一次操作git丢失代码的过程: 写完代码后:git staus git add. git status 发现有一堆.class 文件不想提交,想着代码回退到add 之前,使用了 git log 开 ...
- Git操作: git commit代码后,如何撤回且保留commit的代码
git commit代码后,但是没有push之前,如果发现提交的代码有一个部分是有问题的,或者commit message写的太随便了想改一下,以下命令会帮到你 git reset HEAD^ 敲击该 ...
- [Git] Github上传新repository后自动合并
原因是新repository中有个与老repository一模一样的名字为".git"的隐藏文件夹,删去后即可: 将整个工程直接复制粘贴出此错误...好蠢: Github控制项目的 ...
- 我的Git教程 之 解决 git clone后无代码
解决 git clone 后无代码 前言:这个教程只适用于像我一样大致理解Git的原理,但是不太记得住Git命令的同学使用.所以具体原理只会提一下,具体可以参见Pro Git. 在另一篇 简明的教程 ...
- Git命令之回退篇 git revert git reset
Git command之回退篇 欲练回退 必先了解:HEAD.index.WorkingCopy HEAD: 当前所在的分支版本顶端的别名,也就是最新的一次commit. git commit 之后与 ...
- git 执行 git reset HEAD 报 Unstaged changes after reset
Unstaged changes after reset 解决的办法如下2中办法: 1. git add . git reset --hard 2. git stash git stash dro ...
随机推荐
- .net mvc使用FlexPaper插件实现在线预览PDF,EXCEL,WORD的方法
FlexPaper插件可以实现在浏览器中在线预览pdf,word,excel等. 在网上看到很多关于这个插件实现预览的技术,但是很难做到word和excel在线预览. pdf很好实现. 首先下载相关的 ...
- Backbone学习笔记 - Model篇
2 Model 在Backbone中,Model用于存储核心数据,可以将数据交互相关的逻辑代码放在这里.基本形式如下: var Human = Backbone.Model.extend({ init ...
- JQuery Mobile - 如何让listview不显示向右的箭头?
先看一下有向右箭头的截图吧 这个listview第二个项目,就有向右的箭头,如果单纯显示具体数据,没有扩展显示的内容,那么这个向右的箭头就是多余的,在这种情况下,最好是去掉这个向右箭头,程序中已经在第 ...
- Qt使用gtest进行C++单元测试-01
环境: win7/win10+qt5.8.0(MinGW), 1.gtest获取: 从:https://www.bogotobogo.com/cplusplus/google_unit_test_gt ...
- SFML从入门到放弃(3) 视角和碰撞检测
SFML从入门到放弃(3) 视角和碰撞检测 视角 window.draw();所画出的对象是在世界坐标的绝对位置. 视角可以选定在窗口中显示世界坐标下的的哪一个区域. sf::View init_vi ...
- 2018 Multi-University Training Contest 3
claris出题,orzzzzzz.前一天晚上说是贪心专场,喵喵喵??? 之前clsris说难题扔多校了,据说07,13是女生赛撤下来的题,喵喵喵??? A.Ascending Rating 题目传送 ...
- Python小白学习之路(二)—【Pycharm安装与配置】【创建项目】【运算符】【数据类型】
写在前面: 第二天的学习,感觉比昨天学习相对轻松一些,但是对于我这个编程语言功底很弱的人来说,还是稍稍微有些.....哈尔滨的天气一天天冷了下来,还飘着小雨,不过还是挺有意境的.充实而又忙碌的生活,让 ...
- 【xsy2748】 fly 矩阵快速幂
题目大意:有$n$个点,$m$条有向边,其中第$i$条边需要在$t_i$秒后才出现在图上. 有一个人刚开始呆在$1$号节点,每秒钟他必须要选择一条从他所在位置走出去的边,走出去(如果没有的话这人就死了 ...
- Aop学习笔记系列一
一.Aop解决了什么问题? 1.在说解决了什么问题之前,先介绍一些关键的知识点 a.功能需求:功能需求指项目中的增值需求,比如业务逻辑,UI,持久化(数据库). b.非功能需求:项目中次要的,但却不可 ...
- Pycharm常用快捷键,以及设置
工欲善其事必先利其器,Python开发利器Pycharm常用快捷键以及配置如下,相信有了这些快捷键,你的开发会事半功倍 一 常用快捷键 编辑类: Ctrl + D 复制选定的区 ...