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 ...
随机推荐
- C# Lock锁(个人随记)
先看看为什么要用锁 需求:多线程处理值的加减 static int NoLockData = 0; public static void NoLockNormalTest(int threadIn ...
- LinkedBlockingQueue源码解析(1)
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.对于LinkedBlockingQueue需要掌握以下几点 创建 入队(添加元素) 出队(删除元素) 2 ...
- PhoneGap原理
http://www.oschina.net/question/213217_46380
- Redis安装步骤 - linux系统下
https://blog.csdn.net/lzj3462144/article/details/70973368 https://www.cnblogs.com/pyyu/p/9467279.htm ...
- 程序媛计划——python数据库
#实例:用数据库存储日记,实现日记本功能 #流程 #创建数据库 #coding:utf-8 import sqlite3 connect=sqlite3.connect('test.db') conn ...
- Android四种数据存储方式
一.SharedPreference数据存储篇 1.作用范围 (1).它是一种轻型的数据存储方式 (2).本质是基于XML文件存储key-value键值对数据 (3).通常用来存储一些简单的配置方式 ...
- netstat 查看本机开放端口
root@kali:~# netstat -luntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Add ...
- 话谈C#第一天
今天是第一次接触C#,由于长时间的做Java开发,突然转到C#非常的不自然,但是也有了一些收获,给大家分享一下 using System; using System.Collections.Gener ...
- 深度了解git工具
今天给大家介绍一个深度了解git的学习视频,视频讲的挺好的,可以听听. 深度了解git学习视频
- 【xsy2111】 【CODECHEF】Chef and Churus 分块+树状数组
题目大意:给你一个长度为$n$的数列$a_i$,定义$f_i=\sum_{j=l_i}^{r_i} num_j$. 有$m$个操作: 操作1:询问一个区间$l,r$请你求出$\sum_{i=l}^{r ...