用错checkout 了比如想checkout出下面的一个版本,结果用错了

git checkout  8bfd9b1d292 这样会导致HEAD  deatched ,在这个地方修改后commit

commit 8bfd9b1d2922b55586f41d37f1a2a992d580e1dd Author: lab <lab@dera.com.cn> Date:   Tue Dec 8 20:21:42 2015 +0800

update main.c

当git checkout master  时 刚的8bfd9b1d292 分支就丢了。

可以用下面方法找回

git reflog

c65ec9a HEAD@{0}: checkout: moving from 68657499e57fdcd970f9207ac2cb0f656d3bd5b6 to master
8bfd9b1d292 HEAD@{1}: checkout: moving from master to

git reset --hard 8bfd9b1d292 后可以将恢复

恢复 git reset -hard 的误操作

转帖:http://hi.baidu.com/configuration/item/97fddeea252818d0eb34c964

有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge。甚至一些很小的操作,例如删除一个分支,我都担心数据丢失。
不 久之前,我在做一些大动作(rebasing)之前,我总是备份整个版本库,以防万一。直到最近我才发现git的历史记录是不可修改的,也就是说你不能更 改任何已经发生的事情。你做的任何操作都只是在原来的操作上修改。也就是说,即使你删除了一个分支,修改了一个提交,或者强制重置,你仍然可以回滚这些操 作。
让我们来看一些例子:
$ git init $ touch foo.txt $ git add foo.txt $ git commit -m "initial commit"
$ echo 'new data' >> foo.txt $ git commit -a -m "more stuff added to foo"
你现在看git的历史记录,你可以看到两次提交: $ git log * 98abc5a (HEAD, master) more stuff added to foo * b7057a9 initial commit
现在让我们来重置回第一次提交的状态: $ git reset --hard b7057a9 $ git log * b7057a9 (HEAD, master) initial commit
这看起来我们是丢掉了我们第二次的提交,没有办法找回来了。但是 reflog 就是用来解决这个问题的。简单的说,它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会被记录在reflog中。
$ git reflog b7057a9 HEAD@{0}: reset: moving to b7057a9 98abc5a HEAD@{1}: commit: more stuff added to foo b7057a9 HEAD@{2}: commit (initial): initial commit
所以,我们要找回我们第二commit,只需要做如下操作: $ git reset --hard 98abc5a
再来看一下 git 记录: $ git log * 98abc5a (HEAD, master) more stuff added to foo * b7057a9 initial commit
所以,如果你因为reset等操作丢失一个提交的时候,你总是可以把它找回来。除非你的操作已经被git当做垃圾处理掉了,一般是30天以后。

 How to checkout only one file from git repository ?
http://stackoverflow.com/questions/2466735/how-to-checkout-only-one-file-from-git-repository/2467629#2467629

转载于:https://www.cnblogs.com/fastwave2004/p/5046382.html

git reflog and checkout相关推荐

  1. Git相关二三事(git reflog 和彩色branch)【转】

    转自:https://www.jianshu.com/p/3622ed542c3b 背景 git太常用了,虽然,用起来不难,但也有很多小技巧的东西... 1. 后悔药 哪天不小心,写完代码,没comm ...

  2. git reflog 恢复已删除分支

    语法: git reflog --date=[iso | local | relative] | grep [-w 全词匹配] <branchname> iso:格式化后的时间时间 loc ...

  3. 【Git学习】使用git reflog 命令来查看历史提交记录并使用提交记录恢复已经被删除掉的分支

    一.问题描述 昨天下午有个同事急急忙忙跑我座位上,要我帮忙,说他刚刚因为手误,将他本地的某个project的某个branch分支删除了,并且也将Gitlab上面的远程分支也删除了.他本来是想发起mer ...

  4. Git 回滚 checkout、reset、revert

    Git 回滚 checkout.reset.revert 首先看一下 Git 的工作流程 checkout 是检出的意思,作用是将某次 commit 的状态检出到工作区,它的过程是先将 HEAD 指向 ...

  5. 【Git】Git 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )

    文章目录 一.查看提交记录 git log 1.查看详细提交记录 2.查看简略提交记录 二.版本回滚 git reset 1.Git 中的版本表示 HEAD~1 2.版本库代码回滚 三.撤销回滚 1. ...

  6. Git——版本回退【git reset / git log / git reflog】

    前言:下面是在版本回退中常用的命令. 1. git log -- 查看版本日志 $ git log   HEAD为当前指向的版本指针.使用git log 查看版本日志后,显示了它们的版本号是一系列SH ...

  7. git reflog 时光穿梭机

    目录 一.问题描述 二.解决 一.问题描述 小白花费一周时间做了git log如下所示6个功能. commit的信息就是做了6个功能,每个功能对应一个commit的提交,分别是feature-1 到 ...

  8. Couldn‘t checkout branch_name: Revision not found in project_name git 分支无法checkout,切换分支报错

    原因:git 分支无法checkout,添加的新分支在本地仓库没有同步 解决办法:同步远程分支至本地仓库 git remote updategit fetch

  9. Git中smart Checkout与force checkout

    Git中smart Checkout与force checkout 使用git进行代码版本管理,当我们切换分支有时会遇到这样的问题: 这是因为在当前分支修改了代码,但是没有commit,所以在切换到其 ...

最新文章

  1. ValueError: Masked arrays must be 1-D
  2. 修改表结构添加外键约束,默认外键名
  3. LeetCode题组:第322题-零钱兑换
  4. 微信防撤回python代码_Python实现微信防撤回
  5. maven选包算法(两个相同的包)
  6. android 5. 蓝牙 mesh,蓝牙mesh组网
  7. Java学习之道:jdk环境变量配置方法
  8. 如何在settings里的休眠模式里添加永不休眠
  9. [android视频教程] 传智播客android开发视频教程
  10. NHibernate N+1问题实例分析和优化
  11. 破解版 中易广告联盟程序 v6.0
  12. 系统篇-在linux上用deb包安装steam。
  13. PHP进销存源码 ERP多仓库管理系统源码 手机端+小程序版进销存 全开源可二开 uniapp
  14. yshon对讲机如何调频率_对讲机频率怎么调?四步教你给对讲机调频
  15. 机器学习技法-01-5-Reasons behind Large-Margin Hyperplane
  16. 上传图片计算机没有桌面,电脑桌面消失了!
  17. 使用Matlab绘制gif动图
  18. 禾穗HERS | 职场新人第一定律
  19. 西安电子科技大学计算机复试题目,西安电子科技大学考研复试 微机原理练习题...
  20. 1024 程序员节狂欢盛会,等了一年终于来了(内附大会日程)

热门文章

  1. fibonacci数列前20项_高考数学二级结论——数列部分
  2. WinForm控件之【LinkLabel】
  3. 【OpenCV】imread读取数据为空
  4. 状态开关按钮(ToggleButton)及按钮(Swich)的使用
  5. Spring AOP学习笔记
  6. 给数据库字段增加前缀
  7. vscode 支持 markdown 流程图
  8. 新建用户、付权限命令
  9. ASP调用.Net dll
  10. 计算机里创建本地磁盘分区,大神教你如何将本地硬盘进行分区!