Git 数据恢复

Git 数据恢复

摘要:本文涵盖了多种情况的数据后的恢复,包含:误删分支,重置,push -f 导致的数据丢失.其它情况的数据丢失,可根据本文原理进行恢复.

1. 删除分支数据丢失的恢复

1.1 误删分支

首先,在某分支下,执行了以下操作,导致恶删除了a-branch分支:

git branch -D a-branch

1.2 根据操作记录找出关键信息

查看操作记录:

git reflog 

可以看到类似下面的输出信息:

b6720ef (HEAD -> master) HEAD@{0}: checkout: moving from a-branch to master
0f49852 HEAD@{1}: commit: a-branch:important data
b6720ef (HEAD -> master) HEAD@{2}: checkout: moving from master to a-branch
...

查找删除a分支之前,在a分支上的最后一次有效提交,记录其校验码,此处为0f49852:

0f49852 HEAD@{1}: commit: a-branch:important data

1.3 恢复a-branch

基于此校验码新建分支:

# git branch <recover-branch> <check-code>
git branch a-branch 0f49852

新分支,就是删除分支a之前的最后一次有效提交状态,数据恢复完毕.

2. Reset回溯数据丢失的恢复

2.1 误回溯导致数据丢失

# git reset --hard  <check-code>
git reset --hard  e1b7a4c

2.2 根据操作记录找出关键信息

查看操作记录:

git reflog 

可以看到类似下面的输出信息:

e1b7a4c (HEAD -> a-branch) HEAD@{0}: reset: moving to e1b7a4c  # 执行回溯,导致数据丢失
024e772 HEAD@{1}: commit: a-branch:some-data                   # 增加重要数据的提交操作;
e1b7a4c (HEAD -> a-branch) HEAD@{2}: commit: a-branch:new-base 
...

找到重要数据添加的一次提交,对应的校验码024e772;

2.3 恢复数据

git reset --hard  024e772

3. push -f 导致远程数据丢失的恢复

在此用gitlab举例,恢复被丢失的提交.
通过网页登陆远程的gitlab,进入仓库中丢失数据的分支;
进入 Project overview | Activity 的分页面,可以考到所有的用户的所有操作纪录;
找出丢失的那一次提交,点击hash值的超链接,进入那次提交的详细界面.选择 Options | Cherry-Pick,进入到申请合并本次提交的界面,选择合并到的目标分支,填写申请信息,点击提交;
在 Merge Requests 页面,可以看到合并申请,点击同意,即可完成丢失数据的恢复.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值