Git commit后提交记录消失不见

本文详细解析了在使用Git过程中遇到的detachedHEAD状态的原因及解决方案。当HEAD指向一个具体的commit而不是分支时,就会进入detachedHEAD状态。文章提供了通过gitreflog找回丢失的commit记录,并使用gitcherry-pick恢复代码的方法。同时,介绍了如何避免和退出detachedHEAD状态,帮助读者有效管理Git仓库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我用sourcetree提交后,能看到我提交的代码,然后通过拉取代码,导致commit记录消失。在终端使用git log也没有刚刚提交的commit记录。

解决办法:

使用git reflog可以看到提交记录,复制commit id,然后使用git cherry-pick  id 的方式可以把代码再拉回来,再push就ok了;

原因:

git HEAD detached出现问题.记录消失

如何从git HEAD detached中恢复

 

1.Git Checkout 操作概念

git checkout 实际上是修改HEAD文件的内容,让其指向不同的branch。
HEAD文件指向的branch就是当前branch.

查看.git下的文件HEAD

ref: refs/heads/feature/20170629_996359_init_1

和执行 branch -a的地址是一样的,可见HEAD文件确实指定了了当前branch。

* feature/20170629_996359_init_1
  master

2.为什么会出现detached Head

git checkout最简单的用法,显示工作区,暂存区和HEAD的差异;

$git checkout
Your branch is up-to-date with 'origin/feature/20170629_996359_init_1'.

但是有时候使用git checkout的时候会出现'ou are in 'detached HEAD' state.'的提示,原因是什么呢?

如果让HEAD文件指向一个commit id,那就变成了detached HEAD。采用如下步骤可以复现该效果

  1. git log 查看版本好
  2. git checkout 某一个版本号,可以看到如下结果
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at d3c3a8a... update

如何退出detached Head

git checkout 本地分支即可退出detached状态。
在实际应用出现这个情况一般是check origin的时候,这个时候可能会出现一些错误操作,比如不停的checkout orgin,pull等操作。

 

参考博客:

https://www.jianshu.com/p/2e3367f1d3b3

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值