git本地分支和stash内容报错消失的问题

本地一个长期更新的项目,git log突然报错:

xxx@yyy:~/android/project/kernel/.git$ git log .
fatal: your current branch 'project-dev' does not have any commits yet

如果git status,发现文件全部是new状态.

如果git branch -v, 发现本地分支信息消失.

如果git stash list, 也没有任何消息.

看来, 即使git本身如此优秀, 也是避免不了他自己出错的时候-_-

一. 解决git log:

查看 .git/objects 文件夹, 发现提交都在, 说明有救

ls .git/refs/heads 文件夹, 发现自己的project-dev分支不见了.

平常我都是在secureCRT环境下作业, 并自动保存操作记录. 所以,很容易通过 grep -rn 'git log'找回原来提交的commit信息. 于是, 找到project-dev分支的最新的提交commit id是1f37a1b5706b3877c693bab220a31d312043fc1c.

于是执行 vi .git/refs/heads/project-dev, 并把1f37a1b5706b3877c693bab220a31d312043fc1c保存在此文件中.

git log和git branch -v, 原来提交信息都回来了.

二. 解决git stash list内容不见的问题.

cat .git/logs/refs/stash 文件,找到自己想要的stash id:

xxx@yyy:~/android/project/kernel$ cat .git/logs/refs/stash
0000000000000000000000000000000000000000 6d83090b5d140597866f32b5dbbca642acab3cba ...     On project-dev: enable HDMI display
...//...表示省略内容
25ccdba070ac09929c6f2a1f13b7d29a4b59df5b 8866f78b20047093ff8d1a517868ccce688a5c4b ...     On project-dev: wifi&bt temp

以上中, 0000000000000000000000000000000000000000是最原始的内容,不对应任何stash提交, 6d83090b5d140597866f32b5dbbca642acab3cba是第一个. 8866f78b20047093ff8d1a517868ccce688a5c4b是最后一个. 想找的内容是 "wifi&bt temp"提交的内容, 对应提交就是8866f78b20047093ff8d1a517868ccce688a5c4b.

于是, 执行git show 8866f78b20047093ff8d1a517868ccce688a5c4b内容看看, 正确.

再次执行以下指令保存此stash为diff文件:

git show 8866f78b20047093ff8d1a517868ccce688a5c4b > wifi.bt.diff

最后, 执行git apply打入diff文件.

git apply wifi.bt.diff

对其他想保存的stash id内容做同样的操作.

到此这篇关于git本地分支和stash内容报错消失的文章就介绍到这了,更多相关git本地分支和stash报错内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • git的远程分支的作用和本地分支有什么区别

    不知道大家有没有经历过,当我们切换到了一个新的分支想要提交代码的时候,总会遇到这样的错误. 我们把日志里的英文翻译过来是说,我们  当前的分支没有设置任何上游分支.然后git提示我们可以运行下面这行代码来设置远程的上游,这样我们就可以push成功了. 当然如果我们push的时候执行的不是git push,而是后面再加上origin的话,就可以push成功了.比如这样: 那么这是什么原因呢?这个origin分支又是什么意思呢?我们今天就来讨论一下这个问题. 远程分支 远程分支其实就是远程代码仓库当

  • 详解git使用小结(本地分支与远程分支、git命令)

    git git 是一个版本管理系统(VCS),可以在任何时间点,将文档的状态作为一份更新记录保存起来,并且在任意的时间点,恢复更新记录 版本管理 版本管理是一种记录文件变化的方式,方便查阅特定版本号的文件内容 人为维护文档版本问题 1.文档数量紊多,命名不清晰,导致文档版本混乱 2.每次编译文档需要赋值,不方便 3.多人同时编辑一个文档,容易产生覆盖 git使用 在使用git前,需要全局配置git 提交用户名 - git config --global user.name "用户名"

  • Git获取本地分支对应的远端服务器分支名的方法

    可以使用下面命令查看本地分支在远端服务器的分支名: $ git rev-parse --abbrev-ref local_branch_name@{upstream} 把 local_branch_name 换成要查询的本地分支名,例如 master 等.下面通过例子来说明这个命令各个参数的含义. 先创建一个新的本地分支,名为 new_local_branch,关连到远端服务器的 Remote_Branch_U 分支: $ git checkout -b new_local_branch aos

  • git stash暂存的操作方法

    为什么我们需要它 不得不说,在知道这个命令的时,以及之后的使用中,我都超级热爱这个命令,因为它真的太好用了. 给大家说一下我使用这个命令的场景: 此时我在 feature_666 分支,非常聚精会神加持高专注地实现一个功能 666 模块,简直键盘如飞的编写代码--- 然后这时,客户反馈出一个 bug , 非常严重,必须立马解决,优先级为 0 !!! 于是,我需要去到 release 分支去 checkout 新的分支去工作了,但是 666 功能还没完成怎么办? 此时我面临着一个选择题: A:提交

  • 详解idea中Git的Stash Changes和UnStash Changes用法

    1,先从git上pull(拉)代码. 我们本地进行了一些代码编辑. 图上红框为新增方法 2,使用git的stash Changes功能,如下图 3,查看本地代码变化,可以看到自己新加的方法没有了,又回到了从git上pull下来的最新状态 4,查看git的UnStash Changes功能 点击上图view,可以对比代码,点击 apply stash ,可以将stash的代码恢复到本地 到此这篇关于详解idea中Git的Stash Changes和UnStash Changes用法的文章就介绍到这

  • git本地分支和stash内容报错消失的问题

    本地一个长期更新的项目,git log突然报错: xxx@yyy:~/android/project/kernel/.git$ git log . fatal: your current branch 'project-dev' does not have any commits yet 如果git status,发现文件全部是new状态. 如果git branch -v, 发现本地分支信息消失. 如果git stash list, 也没有任何消息. 看来, 即使git本身如此优秀, 也是避免不

  • 关于获取DIV内部内容报错的原因分析及解决办法

    1.错误描述 2.错误原因 由于向div中添加元素,利用append(); $("#divStyle").append("<div><label>_data[i].name</label></div>"); append里面是动态数据,当请求数据为空时,获取并判断div中的内容: var divContent = $("#divStyle").html(); if(divContent == nul

  • 解决springboot 多线程使用MultipartFile读取excel文件内容报错问题

    springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async 前端页面 报错信息 java.io.FileNotFoundException: C:\Users\dongao\AppData\Local\Temp\tomcat.1255209411477782290.8051\work\Tomcat\localhost\ROOT\upload_7d7b99e5_38da_4a03_93e0_bff20cb48022_00000000.tmp (系

  • Flex读取txt文件中的内容报错原因分析及解决

    Flex读取txt文件中的内容 1.具体错误如下  2.错误原因 读取文件不存在 复制代码 代码如下: var file:File = new File(File.applicationDirectory.nativePath+"/phone.txt"); 3.解决办法 将文件导入进去

  • maven引入本地jar包运行报错java.lang.NoClassDefFoundError解决

    目录 正文 maven引入本地jar的示例 配置maven将本地jar打入package中 maven打包知识分享 scope详解 正文 下文笔者讲述maven引入本地jar包时,运行报错"java.lang.NoClassDefFoundError"的处理方法分享,如下所示 今天在编写maven项目    导入本地jar包    部署到服务器上找不到包  报错信息如:java.lang.NoClassDefFoundError那么如何解决呢?   这种问题是由于,本地jar包在打包的

  • Node.js安装、环境变量配置、报错解决方法

    目录 1.下载Node.js 2.安装Node.js 3.验证Node.js 4.Node.js环境配置 5. Node.js测试 6. 补充 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台. Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好. 1.下载Node.js 下载地

  • Vue环境搭建报错整理大全

    目录 错1: 执行 cnpm install / npm install 报错如下 办法1:降低node.js版本 办法2:降低版本依旧报错,执行相关命令 报错2:core-js 缺失问题 报错3: Connection was aborted, errno 10053 报错4:npm ERR! git@github.com: Permission denied (publickey) 错误5:Error: Cannot find module 'webpack' 问题解决办法 错误6: wan

  • idea+git合并分支解决冲突及详解步骤

    Git分支详解参考: 分支管理组成 1.1.master主干 在版本管理中,代码库应该仅有一个主干.此主干是和当前生产保持一致的,是可用的.稳定的可直接发布的版本,不能再主干上进行任何开发操作.git主干的名字,默认叫做 master,它是自动建立的. 1.2.develop主开发分支 因为不能在主干master上进行开发,那么就需要在基于主干master的基础上,创建一个开发主分支develop,开发主分支develop的代码永远是最新的,所有的新功能都是以此分支为基础进行开发的,该分支只是做

  • Java @Autowired报错原因分析和4种解决方案

    目录 报错原因分析 解决方案1:关闭报警机制 解决方案2:添加Spring注解 解决方案3:允许注入对象为NULL 解决方案4:使用@Resource注解 总结 前言: 上图的报错信息相信大部分程序员都遇到过,奇怪的是虽然代码报错,但丝毫不影响程序的正常执行,也就是虽然编译器 IDEA 报错,但程序却能正常的执行,那这其中的原因又是为何? 报错原因分析 报错的原因首先是因为 IDEA 强大的报警机制,@Autowired 为 Spring 的注解,含义是将某类动态的注入到当前类中, 如下图所示:

  • Git发现git push origin master 报错的解决方法

    git push origin master 报错的解决方法,分享给大家,具体如下: 错误提示如下 [root@linux1 php]# git push -u origin master To git@github.com:kangvcar/Results-Systems--PHP.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@github.com:kangvcar

随机推荐