首页 > 其他分享 >git拉取后,代码不见了,没有冲突覆盖,且,没有删除,看我是怎么找回的

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

时间:2024-08-15 11:52:58浏览次数:19  
标签:HEAD git 找回 代码 拉取 命令 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社区或者其他开发者的帮助。将你的问题描述清楚,并提供尽可能多的细节,他们可能会给你提供进一步的建议或解决方案。


四、参考文章

标签:HEAD,git,找回,代码,拉取,命令,Git,提交
From: https://blog.csdn.net/cplvfx/article/details/141033070

相关文章

  • git提交本地代码到服务器
    要在Git中提交本地代码,你可以使用以下命令:检查当前状态(查看哪些文件已更改):gitstatus添加文件到暂存区(将更改标记为准备提交):gitadd<file>#添加单个文件gitadd.#添加所有更改的文件提交更改(保存更改到本地仓库):gitcommit-m"Yourcommitmessag......
  • Git上传下载大文件
    解决上传,文件大小限制命令:gitlfsinstall 更改文件.gitattributes *.jarfilter=lfsdiff=lfsmerge=lfs-text*.pdffilter=lfsdiff=lfsmerge=lfs-text*.fbxfilter=lfsdiff=lfsmerge=lfs-text*.tgafilter=lfsdiff=lfsmerge=lfs-text*.PNGfilter=lfsd......
  • 利用git插件git LFS实现大文件上传
    目录利用git插件gitLFS实现大文件上传原因:gitLFS下载链接前提命令执行部分:第一步,跟踪:检查跟踪情况:第二步:添加和提交跟踪文件第三步:提交收工注意:利用git插件gitLFS实现大文件上传原因:gitub默认文件传送为100MB,有时我们要上传大于100MB大小文件gitLFS下载链接https://www.y......
  • Git教程1
    一、什么是Git1、Git是免费、开源、分布式的版本控制系统。使用仓库(Repository)的数据库记录文件的变化,仓库中每个文件都有完整的版本变化记录。2、版本控制系统可以跟踪每个文件的变化,使得项目成员之间的协作更加高效。3、版本控制系统:(1)集中式:SVN,所有文件都在中央Server......
  • Git泄露--------Log
    步骤一:虚拟机运行命令:python2GitHack.py后跟网址http://challenge-d9ebdd73f20fda85.sandbox.ctfhub.com:10800/.git步骤二:切换到dist文件下步骤三:查看目录下内容:ls-la步骤四:进入.dist目录下:cd.git步骤五:输入命令查找:gitshow步骤六:复制内容提交FlagStash......
  • Git使用
    1.初始化工作1.设置用户名称和email地址git命令行执行以下信息#设置用户信息gitconfig--globaluser.name"sss"gitconfig--globaluser.email"[email protected]"#查看配置信息gitconfig--list2.获取git仓库(两种方式)1.在本地初始化一个git仓库(不常用)2......
  • 【问题解决】git status中文文件名乱码
    问题复现解决办法在gitbash中直接执行如下命令gitconfig--globalcore.quotepathfalse原因通过gitconfig--help可以查看到以下内容:core.quotePathCommandsthatoutputpaths(e.g.ls-files,diff),willquote"unusual"charactersinthepathnamebyencl......
  • git报错 fatal: unsafe repository 解决方法 xxx is owned by someone else
    转载来自:https://www.aspirantzhang.com/network/git-fatal-unsafe-repository.htmlgit近期进行了版本升级,添加了新的目录安全限制。造成在进行git常规操作时,或在各类编辑器如VSCode中无法发现.git文件,报错:fatal:unsaferepository(xxxisownedbysomeoneelse.)Toaddan......
  • 在K8S中,镜像的拉取策略有哪些?
    在Kubernetes中,镜像拉取策略(ImagePullPolicy)定义了何时从容器镜像仓库拉取或更新容器镜像。这些策略对于管理容器化应用的部署和更新非常重要。Kubernetes提供了以下几种镜像拉取策略:Always:无论本地是否存在该镜像,总是尝试从远程仓库拉取最新的镜像。这可以确保使用的是最......
  • git 的安装和配置
    一、下载和安装访问Git--distributed-even-if-your-workflow-isnt获取安装包进行下载。下载直接,如果是windows系统,且下载的是msi版本,则直接双击安装即可。如果是windows系统,且下载的是zip版本,则解压后放于任一目录下,将该目录配置进环境变量即可。windows配置git......