曾几何时,我的项目中现在有一个文件,我现在希望能够得到。

问题是:我不知道何时删除它以及它在哪条路径上。

如何找到该文件的提交?


#1楼

无法编辑接受的回复,因此在此处将其添加为答案,

要恢复git中的文件,请使用以下命令(注意SHA后面的'^'符号)

git checkout <SHA>^ -- /path/to/file

#2楼

获取已删除文件的列表,并复制已删除文件的完整路径

git log --diff-filter=D --summary | grep delete

执行下一个命令以查找该提交的提交ID,并复制提交ID

git log --all -- FILEPATH

显示已删除文件的差异

git show COMMIT_ID -- FILE_PATH

请记住,您可以使用> like将输出写入文件

git show COMMIT_ID -- FILE_PATH > deleted.diff

#3楼

下面是一个简单的命令,开发人员或git用户可以从存储库根目录传递已删除的文件名并获取历史记录:

git log --diff-filter=D --summary | grep filename | awk '{print $4; exit}' | xargs git log --all --

如果有人可以改善命令,请执行。


#4楼

@琥珀给出了正确的答案! 仅此一项,如果您不知道文件的确切路径,则可以使用通配符! 这对我有用。

git log --all -- **/thefile.*

#5楼

假设您要恢复一个名为MyFile的文件,但不确定其路径(或扩展名):

前提: 通过进入git root避免混淆

一个不平凡的项目可能具有名称相似或相同的多个目录。

> cd <project-root>
  1. 查找完整路径

    git log --diff-filter = D --summary | grep删除| grep MyFile

    delete mode 100644 full/path/to/MyFile.js

full/path/to/MyFile.js是您要查找的路径和文件。

  1. 确定影响该文件的所有提交

    git log --oneline --follow-完整/路径/到/MyFile.js

    bd8374c Some helpful commit message

    ba8d20e Another prior commit message affecting that file

    cfea812 The first message for a commit in which that file appeared.

  2. 检出文件

如果选择第一个列出的提交(按时间顺序选择最后一个,此处为bd8374c),将找不到该文件,因为在该提交中已将其删除。

> git checkout bd8374c -- full/path/to/MyFile.js`error: pathspec 'full/path/to/MyFile.js' did not match any file(s) known to git.`

只需选择前面的(附加一个插入号)提交即可:

> git checkout bd8374c^ -- full/path/to/MyFile.js

#6楼

摘要:

  1. 第1步

您可以在已删除文件的历史记录中搜索文件的完整路径git log --diff-filter=D --summary | grep filename git log --diff-filter=D --summary | grep filename

  1. 第2步

您可以从提交中删除文件,然后再将其删除

restore () {filepath="$@"last_commit=$(git log --all --full-history -- $filepath | grep commit | head -1 | awk '{print $2; exit}')echo "Restoring file from commit before $last_commit"git checkout $last_commit^ -- $filepath
}restore my/file_path

#7楼

如果您不知道确切的路径,可以使用

git log --all --full-history -- "**/thefile.*"

如果知道文件所在的路径,则可以执行以下操作:

git log --all --full-history -- <path-to-file>

这应该显示接触该文件的所有分支中的提交列表。 然后,您可以找到所需文件的版本,并显示为...

git show <SHA> -- <path-to-file>

或使用以下方法将其还原到您的工作副本中:

git checkout <SHA>^ -- <path-to-file>

请注意脱字符号( ^ ),它在标识出该字符之前先进行检出,因为在<SHA>提交时,文件已被删除,我们需要查看上一个提交以获取已删除文件的内容


#8楼

尝试使用其中一种查看器,例如gitk以便您可以浏览历史记录以查找该一半记忆的文件。 (如果需要所有分支,请使用gitk --all

Git:如何在项目提交历史中查找已删除的文件?相关推荐

  1. [转]Git:如何在项目提交历史中查找已删除的文件?

    曾几何时,我的项目中现在有一个文件,我现在希望能够得到. 问题是:我不知道何时删除它以及它在哪条路径上. 如何找到该文件的提交? #1楼 无法编辑接受的回复,因此在此处将其添加为答案, 要恢复git中 ...

  2. 在Linux中查找和删除重复文件的4种方法

    大神教你在Linux中查找和删除重复文件的4种方法 在本教程中,您将学习如何使用rdfind和fdupes命令行工具以及称为DupeGuru和FSlint的GUI工具在Linux中查找和删除重复文件. ...

  3. Linux查找文本中的重复项,2在Linux中查找和删除重复文件的有用工具

    如果您有从互联网下载各种内容的习惯,组织您的主目录甚至系统可能会特别困难. 通常,您可能会发现已下载相同的mp3,pdf,epub(以及所有其他文件扩展名)并将其复制到不同的目录中. 这可能会导致您的 ...

  4. linux服务器清除cdn,Linux服务器中查找并删除大文件的五种方法,Linux系统清除文件内容的命令分享...

    很多时候,在处理Linux终端中的文件时,您可能希望清除文件的内容,而无需使用任何Linux命令行编辑器打开它.怎么能实现这一目标?在本文中,我们将借助一些有用的命令,通过几种不同的方式清空文件内容. ...

  5. Android手机和平板资源文件,如何从Android手机和平板电脑中恢复已删除的文件

    第3部分:如何从Android手机和平板电脑中恢复已删除的文件 正如我们所看到的,借助为此特定原因设计的专用工具,您仍可以从设备中恢复已删除的文件.最好的Android数据恢复软件之一dr.fone ...

  6. Linux 系统中恢复已删除的文件

    注:文章内容仅用于本人日常学习记录 Linux 系统中恢复已删除的文件 当用户意外地删除了一个仍然需要的文件时,大多数情况下,是没有简便的方法可以重新找回或重建这个文件.不过,幸运的是文件是可以通过一 ...

  7. linux下删除的文件怎么恢复出厂设置,如何在Linux中恢复已删除的文件(机器翻译)...

    如果您在Linux中不小心删除了一个文件,不要担心,只要该区域的磁盘尚未被覆盖,您可能仍然可以恢复它.这篇文章将告诉你如何在Linux中轻松恢复被删除的文件. Foremost能够搜索磁盘或原始图像文 ...

  8. 在 Linux 中查找和删除重复文件

    原文链接:https://www.linuxprobe.com/linux-FSlint.html FSlint同时具有GUI和CLI模式.因此,对于新手来说,这是一个用户友好的工具.FSlint不仅 ...

  9. 在Git存储库中查找并恢复已删除的文件

    假设我在Git存储库中. 我删除文件并提交更改. 我继续工作并做出更多承诺. 然后,我发现需要还原该文件. 我知道我可以使用git checkout HEAD^ foo.bar来签出文件,但是我真的不 ...

最新文章

  1. verilog 计数器_HDLBits: 在线学习 Verilog ()
  2. 机器人学习--粒子滤波定位-MATLAB仿真1
  3. 【MRCTF—Web】做题+复现记录
  4. 《构架之美》阅读笔记五
  5. eclipse关闭tomcat服务器热部署
  6. ion-nav-view的学习 和理解
  7. 感知机(python实现)
  8. jQuery遍历div,判断是否为空,为空时执行某个操作
  9. ASP.NET MVC V2 Preview 1 发布 期望VS有更好的表现
  10. Maven必知的7个问题,你会吗?
  11. 微博:将对“宣扬仇恨”行为进行界定,并开展专项整顿
  12. 注册表和计算机用户名关系,IUSR_计算机名和IWAM_计算机名帐户的用户名和密码...
  13. 我辞掉程序员的工作,体验了半年的自驾游生活
  14. 一个项目部署多个节点会导致锁失效么_一文看透 Redis 分布式锁进化史(解读 + 缺陷分析)...
  15. 基于OpenCV的计算机视觉入门(5)图像美化(下)
  16. wps改照片底色有红边_入学攻略丨证件照的三种换底色方式,你知道了吗?
  17. 夺命雷公狗---node.js---7fs模块初步
  18. 图解微服务技术架构体系
  19. mysql中ang_MySQL笔记
  20. 在线hash密码破解网站列表

热门文章

  1. const 是个类型修饰符号。
  2. Android SystemTrace使用攻略
  3. Android getLocationInWindow
  4. MethodTrace 生成的trace文件为空
  5. 什么是restful风格?
  6. Android Studio 项目打包成apk时 Signature Version 的选择
  7. android点击输入法会把底部顶上去的解决办法
  8. Shell引用-逻辑判断
  9. 【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏
  10. C# xml通过xslt转换为html输出