首页 > 其他分享 >如何在Git仓库中查找并恢复已删除的文件?

如何在Git仓库中查找并恢复已删除的文件?

时间:2023-10-29 21:24:20浏览次数:31  
标签:文件 Git file 删除 仓库 -- 查找 提交 git

内容来自 DOC https://q.houxu6.top/?s=如何在Git仓库中查找并恢复已删除的文件?

假设我在一个Git仓库中。我删除了一个文件并提交了更改。我继续工作并进行一些更多的提交。然后,我发现在删除该文件后需要恢复它。

我知道可以使用git checkout <commit> -- filename.txt来检出一个文件,但我不知道该怎么找到删除了给定文件名的提交。

  1. 如何找到删除了给定文件名的提交?
  2. 如何将该文件恢复到我的工作副本中?

找到影响给定路径的最后一个提交。由于文件不在HEAD提交中,因此上一个提交必须已删除了它。

git rev-list -n 1 HEAD -- <file_path>

然后使用插入符号(^)检出该提交之前的版本:

git checkout <deleting_commit>^ -- <file_path>

或者在一条命令中,如果$file是有问题的文件。

git checkout $(git rev-list -n 1 HEAD -- "$file")^ -- "$file"


如果您使用的是zsh并且启用了EXTENDED_GLOB选项,则插入符号将不起作用。您可以使用~1代替。

git checkout $(git rev-list -n 1 HEAD -- "$file")~1 -- "$file"

标签:文件,Git,file,删除,仓库,--,查找,提交,git
From: https://www.cnblogs.com/xiaomandujia/p/17796489.html

相关文章

  • EDA工具使用+GIT操作+python编程+C语言编程+Riscv相关+TCL操作
    EDA工具使用Verdi覆盖率转网页urg-full64-dirsimv.vdbVerdi加载sessionverdi-ssrsessionFileVcs分部编译额外选项-partcomp:自动分块编译。-fastpartcomp:使用多核计算系统并行部分编译。-pcmakeprof:查看每部分编译占用的时间,方便对时间更久的进行拆分。-partc......
  • git 常用指令 续四
    1.创建标签,查看标签//首先,切换到需要打标签的分支上gitbranchgitcheckout<branch_name>//然后创建标签gittag<name>gittagv1.0//查看所有标签gittag默认标签是打在最新提交的commit上的有时候,如果忘了打标签,可以找到历史提交的commitid,然后打上就可以了git......
  • RKE2 config containerd private registry (rke2配置私有仓库地址)
    文章目录1.预备条件2.配置镜像仓库1.预备条件安装rke2:博客:rke2在线部署kubernetes官网:https://docs.rke2.io/install/quickstart2.配置镜像仓库Containerd可以配置为连接到私有镜像仓库,并使用仓库在每个节点上拉取私有镜像。启动时,RKE2会检查/etc/rancher/rke2/中是......
  • nexus3 作为docker仓库与镜像缓存的记录
    因为搞k8s拉取镜像太慢,不同版本每次都要等待半天,用nexus3作为docker镜像的缓存与仓库镜像,虽然权限控制弱一些,够用,记录用法及踩坑。1作为镜像缓存,唯一的坑,就是第一次拉取及后续拉取镜像,没有缓存,也不晓得为啥配置了 insecure-registries和 registry-mirrors没生效,iftop观察流......
  • git 常用指令 续三
    1.从远程库clone时,默认情况下,只能看到本地的main分支,若需要创建远程origin的dev分支到本地gitcheckout-bdevorigin/dev//创建本地dev分支和远程dev分支关联gitaddenv.txt//添加修改gitcommit-m"addenv"//提交修改gitpushorigindev//推送到远程origin的de......
  • git 常用指令 续二
    1.Git提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作gitstash//储存工作现场gitstashlist//查看存储的列表2.工作现场还在,Git把stash内容存在某个地方了,需要恢复一下gitstashapply//恢复,但是恢复后,stash内容并不删除gitstashdro......
  • git 常用指令 续
    分支管理(branch)main分支是主分支,HEAD指向的就是当前分支,main指向提交。创建新的分支,Git新建一个指针,指向main相同的提交,再把HEAD指向新分支。1.创捷并切换新分支创建分支,然后切换到新分支:gitcheckout-b分支名//创建+切换分支gitswitch-c分支名//创建+切换分支......
  • 021-Qt 配置GitHub Copilot
    Qt配置GitHubCopilot文章目录Qt配置GitHubCopilot项目介绍GitHubCopilot配置GitHubCopilotQt前置条件升级QtGitHubCopilot前置条件激活的了GitHubCopilot账号安装Neovim启用插件,重启Qt配置GitHubCopilo安装Nodejs下载[copilot.vim](https://github.com/github/copil......
  • 收藏从未停止,练习从未开始——MYSQL游标存储过程IDEA快捷键配置SpringBoot入门到入土G
    “收藏从未停止,练习从未开始”,或许有那么一些好题好方法,在被你选中收藏后却遗忘在收藏夹里积起了灰?今天请务必打开你沉甸甸的收藏重新回顾,分享一下那些曾让你拍案叫绝的好东西吧!本人详解:(提醒:随笔)本人详解作者:王文峰,参加过2020年度博客之星,《Java王大师王天师》作者采购供应链共享......
  • git 常用指令
    1.初始化一个项目gitinit//在当前目录创建.git版本库gitinitnew_dir//在指定目录创建.git版本库2.添加改动到暂存库,可以添加所有改动或者添加指定文件gitadd.gitaddreadme.md3.把文件提交到分支上gitcommit-m"提交说明信息"4.查看改动gitstatus......