git拉取后,代码不见了,没有冲突覆盖,且,没有删除,看我是怎么找回的

git拉取后,代码不见了,没有冲突覆盖,且,没有删除
在这里插入图片描述

重点提醒

  • 当你的代码丢失时,不要惊慌,首先尝试使用本地的历史记录和远程仓库来找回代码。如果这些方法不起作用,你可以考虑其他的救援工具或寻求帮助。在日常开发中,及时进行备份和提交代码可以避免代码丢失的风险。
  • 当你在使用Git进行版本控制时,有几种常见情况可能导致代码丢失,包括误删文件、错误地回滚版本、意外的硬盘故障等。但是,不用担心,Git提供了多种方法来找回丢失的代码
  • 如果你的Git代码丢失了,不要慌张。尝试以下方法,相信你能够找回你的代码。同时,为防止代码丢失,建议你定期备份你的Git仓库以及提交代码到远程仓库。这样即使出现问题,也能够快速恢复你的代码。
  1. git仓库中还是不要做shift+del这种操作
  2. git reset --hard要谨慎
  3. 遇到问题别慌,耐心找方法

一、reflo命令

1.先执行命令,查看历史提交记录

打开后命令工具后,cd进入你的项目,即项目.git所在文件夹

git reflog

操作后如下图:
在这里插入图片描述

D:\xxxxProject\xxxxShop\xxxxshop>git reflog
1b7d9c8 (HEAD -> master) HEAD@{0}: commit: 错误丢失备份
d08f7a8 HEAD@{1}: reset: moving to d08f7a8
d08f7a8 HEAD@{2}: reset: moving to d08f7a8
aa291b7 HEAD@{3}: reset: moving to aa291b7
a69f249 HEAD@{4}: reset: moving to a69f249
0762bd4 HEAD@{5}: reset: moving to 0762bd4
fa7ac8b (xxxxShop/master) HEAD@{6}: checkout: moving from master to master
fa7ac8b (xxxxShop/master) HEAD@{7}: pull --progress --no-edit --no-stat --recurse-submodules=no xxxxShop: Merge made by the 'ort' strategy.
671b2e9 HEAD@{8}: commit: 11
0762bd4 HEAD@{9}: checkout: moving from a69f249a590d789d163cb81eacfe30ea5114bd22 to master
a69f249 HEAD@{10}: checkout: moving from 0762bd41670f095ea6db689cb653fa8f5af52083 to a69f249a590d789d163cb81eacfe30ea5114bd22
0762bd4 HEAD@{11}: checkout: moving from master to 0762bd41670f095ea6db689cb653fa8f5af52083
0762bd4 HEAD@{12}: reset: moving to 0762bd41670f095ea6db689cb653fa8f5af52083
0762bd4 HEAD@{13}: reset: moving to 0762bd41670f095ea6db689cb653fa8f5af52083
0762bd4 HEAD@{14}: reset: moving to 0762bd41670f095ea6db689cb653fa8f5af52083
0762bd4 HEAD@{15}: revert: Revert "111"
a69f249 HEAD@{16}: cherry-pick: 111
ba000fe HEAD@{17}: reset: moving to ba000fe4c75eb2ef234a813fc34b99a1c8a76911
ba000fe HEAD@{18}: revert: Revert "111"
aa291b7 HEAD@{19}: reset: moving to aa291b75cbc9341b63a748c05288ff7094b15f3a
aa291b7 HEAD@{20}: reset: moving to HEAD
aa291b7 HEAD@{21}: commit: 111
d08f7a8 HEAD@{22}: commit: 1
e7d88a4 HEAD@{23}: commit: 修改xxID类型 

d08f7a8 HEAD@{1}: reset: moving to d08f7a8

d08f7a8 即为ID

2.执行 恢复命令

git reset --hard  7f00873

不过,我之前遇到过,执行这个命令是解决了,代码连同文件一起找回的,不需要修改任何东西
这次,不行;我感觉应该是执行了git reset --hard命令。下面内容我会提到。


二、 终极解决方案find命令

find .git/objects -type f | xargs ls -lt | sed 30q 

1.打开git-bash.exe

注意:windows没有find命令,在git bash执行即可

在这里插入图片描述

2.cd进入项目

打开后,cd,进入你的项目,即项目.git所在文件夹

cd D:/xxxProject/xxxShop/

在这里插入图片描述

3.执行find命令

 find .git/objects -type f | xargs ls -lt | sed 30q

结果如图
在这里插入图片描述

4. 执行生成文件名称

提取 object/ 后面的值,第一个/要去掉。
例如第一个是 :

-r--r--r-- 1 Administrator 197121     444 Aug  8 16:37 .git/objects/07/aa05580ccf9d431a1f403d7ebf6348d1e8d343

命令如下:

git show 07aa05580ccf9d431a1f403d7ebf6348d1e8d343>123.md

他就会在你的项目根目录里生成一个文件123.md的文件,
.git文件夹同级;
如果你写的是123.txt文件,也可以。
如下图:
在这里插入图片描述
打开这个文件,你就可以看到里面丢失的内容了。
然后,复制粘贴+修改文件和文件内容即可。
我感觉应该是执行了git reset --hard命令
下面是我操作的截图
图1(迁出/分离)
在这里插入图片描述图2(迁出/分离)
在这里插入图片描述图3(重置-保修修改mixed、删除修改hard)

在这里插入图片描述


三、延伸阅读

情况一:已提交的代码丢失

可以尝试使用Git的reflog命令来查看本地仓库的操作记录。这个命令会显示出你在本地仓库中的所有操作,包括切换分支、合并提交等操作。你可以在这个列表中找到你之前的提交版本,并使用git checkoutgit reset命令来恢复到特定的提交版本。

如果你已经提交了代码,并且发现某个提交丢失了,可以按照以下步骤进行恢复:

  1. 首先,使用git reflog命令查看Git的引用日志,它记录了你的所有分支和HEAD的移动情况。

  2. 找到你丢失提交的哈希值,通常是一个较长的字符串,如abc123

  3. 使用git cherry-pick abc123命令将丢失的提交应用到当前分支中。

1.本地恢复:

如果你的代码是最近提交的,并且还没有推送到远程仓库,那么你可以尝试使用Git的一些命令来找回丢失的代码。

  • 查看Git的日志: 使用git reflog命令可以列出你的本地仓库的所有操作记录,包括提交、分支切换等。你可以通过查看日志来找回代码的提交ID。
  • 回滚版本: 如果你知道你丢失代码的提交ID,你可以使用git reset命令来回滚到该提交ID,并将代码恢复到该版本。

2.远程恢复:

如果你将代码推送到了远程仓库,但本地的代码丢失了,你可以尝试使用以下命令来找回代码。

  • 克隆远程仓库: 使用git clone命令可以将远程仓库克隆到本地,并获取最新的代码。
  • 恢复远程分支: 如果你知道远程仓库中的分支名,可以使用git checkout命令切换到相应分支,并将代码恢复到该分支的最新提交。

3.查看本地备份:

查看本地备份:首先,检查一下你的本地备份。在你的本地电脑上,使用命令行进入你的Git仓库所在的文件夹,并执行git log命令来查看Git的提交历史记录。在这个列表中,你可以找到提交ID(commit ID)和相应的提交消息。如果你找到了之前的提交,那么意味着你的代码并没有丢失,你可以用git checkout命令恢复到特定的提交版本,或者使用git reset命令来回滚到之前的提交。

4.检查远程仓库:

如果你在使用远程仓库(例如GitHub、GitLab等),可以打开相应仓库的网页界面,查看仓库的提交记录和文件变动情况。如果你的代码在远程仓库有备份,你可以使用git pull命令将最新的代码拉取到本地。

情况二:未提交的代码丢失

如果你在未提交代码时发生了丢失,可以按照以下步骤进行恢复:

  1. 首先,使用git fsck –lost-found命令查找丢失的对象。这个命令将在.git/lost-found/other目录下生成一些文件。

  2. 如果找到丢失的对象,可以使用git show命令来查看文件内容,并将其复制到正确的位置。

情况三:误删除的文件恢复

如果你不小心删除了一个Git仓库中的文件,可以按照以下步骤进行恢复:

  1. 使用git reflog命令查找删除文件的提交记录。

  2. 找到文件删除的提交哈希值,例如abc123

  3. 使用git show abc123:path/to/file命令来查看文件的内容。

  4. 使用git checkout abc123 — path/to/file命令将文件恢复到指定提交的版本。

情况四:误合并的代码恢复

如果你在合并分支时遇到问题,导致代码丢失,可以按照以下步骤进行恢复:

  1. 使用git reflog命令查找合并的提交记录。

  2. 找到合并提交的哈希值,例如abc123

  3. 使用git revert -m 1 abc123命令撤销合并提交,并还原到合并前的状态。

需要注意的是,以上方法只能在本地仓库中恢复代码。如果代码已经推送到远程仓库,可能需要与远程仓库进行同步。可以使用git pull命令来拉取最新的代码,或者使用git push命令将本地仓库的代码推送到远程仓库。

另外,为避免代码丢失,建议定期进行代码的提交和推送,以及备份关键代码。此外,可以使用Git提供的分支和标签功能,来更好地管理和保护你的代码。

使用Git的备份功能:

Git提供了一个称为“备份(stashing)”的功能,它可以将当前的更改暂存起来,以便你可以切换到其他分支或版本。如果你丢失了代码,但是之前使用过备份功能,你可以尝试使用以下命令来恢复代码:

  • 暂存更改: 使用git stash命令将当前的更改暂存起来。
  • 恢复更改: 使用git stash apply命令将之前暂存的更改应用到当前分支,从而恢复代码。

使用Git的文件恢复工具:

如果你无法通过以上方法找回代码,你可以尝试使用一些第三方的Git文件恢复工具,如Gitの救援、git-recover等。这些工具可以扫描你的Git仓库及其历史记录,并尝试恢复丢失的代码文件。

寻求帮助:

如果你尝试了以上方法仍然无法找回代码,你可以寻求Git社区或者其他开发者的帮助。将你的问题描述清楚,并提供尽可能多的细节,他们可能会给你提供进一步的建议或解决方案。


四、参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙-极纪元JJY.Cheng

客官,1分钱也是爱,给个赏钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值