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 ...
随机推荐
- asp .net api 日志
方法1:继承IExceptionLogger ExceptionLogger是框架提供的表示未处理的异常记录器的抽象类 public class RecordExceptionLogger : Exc ...
- Eclipse (JavaEE版)中修改web项目的访问路径
访问路径,也就是指在浏览器中访问该web系统时的根路径,比如http://localhost:8080/xxxx/index.jsp 这里的xxxx. 也就是request.getContextPa ...
- python 简单搭建阻塞式单进程,多进程,多线程服务
由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 : --> 点击这里 我们可以通过这样子的方式去理解apache的工作原理 1 单进程TCP服 ...
- 【文文殿下】Win7打开无线热点
下载程序 : https://files.cnblogs.com/files/Syameimaru/wifi.rar 打开config.ini 修改相关信息,然后运行程序. 运行成功后,打开网络和共享 ...
- Recursion-687. Longest Univalue Path
Given a binary tree, find the length of the longest path where each node in the path has the same va ...
- Text and Binary modes
http://perlmaven.com/what-is-a-text-file https://cygwin.com/cygwin-ug-net/using-textbinary.html Text ...
- 用xshell ssh连接测试服务器时候出的问题
问题还原:用ssh连接测试服务器 给我结结实实报了个错 FBIwarning: ------------------------------------------------------------ ...
- 简单HOG+SVM mnist手写数字分类
使用工具 :VS2013 + OpenCV 3.1 数据集:minst 训练数据:60000张 测试数据:10000张 输出模型:HOG_SVM_DATA.xml 数据准备 train-images- ...
- 【OpenCV3】threshold()函数详解
threshold()函数源码 double cv::threshold( InputArray _src, OutputArray _dst, double thresh, double maxva ...
- 【apio2007】【ctsc2007】 数据备份 贪心+链表+堆
题目大意:有n个点,k条链,每个点离原点有一定的距离.要你用k条链连接2k个点,使得k条链的长度最短. 首先每次肯定是链相邻的2个点,所以我们先把相邻2个点的差值求出来,得到有n-1个数的数列. 然后 ...