git 找回丢失的commit

在执行git rebase后丢失了本地代码,本文详细记录了如何通过git的各种重置方式找回丢失的commit,包括hard、soft、mixed、merge和keep等选项的使用,以及对index和working tree的影响。

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

事件背景:已经提交了一个新增的文件,但是执行 git rebase (复位基底),导致本地代码丢失,找回巨费时,特记录如下;

执行:git reflog       ----查看提交记录;挽回错误的重置,查看命令历史,用来记录你的每一次命令
git reset --hard (+rebase: updating HEAD 版本代码号)  
git cherry-pick (+commit: ioc 版本代码号)
PS D:\yujie_web> git reflog
a012b29 (HEAD -> diff, master) HEAD@{0}: checkout: moving from master to diff
a012b29 (HEAD -> diff, master) HEAD@{1}: rebase finished: returning to refs/heads/master
a012b29 (HEAD -> diff, master) HEAD@{2}: rebase: table
776fe8d (origin/master, origin/HEAD) HEAD@{3}: rebase: checkout refs/remotes/origin/masterkout refs/remotes/origin/master
49a3524 HEAD@{4}: rebase: updating HEAD
49a3524 HEAD@{5}: rebase: aborting
1793050 HEAD@{6}: commit: ioc                                                           er
776fe8d (origin/master, origin/HEAD) HEAD@{7}: rebase: checkout refs/remotes/origin/master
49a3524 HEAD@{8}: commit: table
b4ee366 HEAD@{9}: rebase finished: returning to refs/heads/masterb4ee366 HEAD@{10}: rebase: vscode 配置更改
d7b38ef HEAD@{11}: rebase: checkout refs/remotes/origin/master
a1215cd HEAD@{12}: commit: vscode 配置更改6fa7e13 HEAD@{13}: clone: from http://git.code.oa.com/guanjia-innovation/yujie_web.git
PS D:\yujie_web> git reset --hard 49a3524HEAD is now at 49a3524 tablePS D:\yujie_web> git cherry-pick 1793050
error: could not apply 1793050... ioc

备注:
index,执行git add的操作,会对文件创建索引,所有被跟踪的文件索引会放入index,表示文件被修改待提交
working tree,当前工作区,被修改但未被add的文件,存储在工作区
ORIG_HEAD,用于指向前一个操作状态,每次的commit或者pull或者reset,git 都会把老的HEAD拷贝到.git/ORIG_HEAD,通过对ORIG_HEAD的引用可
以指向前一次的操作状态

1、hard(慎用) 重设index和working tree,所有改变都会被丢弃,包括文件的修改、新增、删除等操作,并把HEAD指向,
因此通过git log查看版本提交记录,被reset的版本记录会被丢弃,但可以通过git reflog查看

2、soft 不重设index和working tree,仅仅将HEAD指向,表示已经commit的文件会取消commit, 通过git status查看,
文件会处于待commit状态“Changes to be committed”

3、mixed(默认) 重设index,但不重设working tree,表示已经被add的文件,被取消add, 通过git status查看,文件会处于待添加索引状态
“Changes not staged for commit”

4、merge 重设index,重设working tree中发生变化的文件,但是保留index和working tree不一致的文件

5、keep 重设index,重设working tree中发生变化的文件

---------------------------当你发现自己的才华撑不起野心时,就请安静下来学习吧----------------------------------

这是LZ的博客,感谢垂阅,如有错误之处,请大佬斧正,如此文章对您的工作或生活有帮助,请关注我,会持续更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值