Find commit 以在 Azure Devops 中查找非常旧的已删除文件

Posted

技术标签:

【中文标题】Find commit 以在 Azure Devops 中查找非常旧的已删除文件【英文标题】:Find commit to find a very old deleted file in Azure Devops 【发布时间】:2021-04-17 17:43:08 【问题描述】:

我一年多前开始从事这个项目,但似乎比这更长的文件丢失了一个文件。我正在尝试返回我的存储库以查找此文件可能已被删除的时间,但我不知道什么提交,更不用说可能完成它的日期或用户了。

似乎在 Azure Devops 中,我只能按名称、路径、用户、日期进行搜索,或者只通过每次提交进行搜索,直到找到文件 lol。 我已经浏览了包含它的文件的历史记录,但在不知道日期、用户或提交的情况下,我无法找到它?

我尝试过 git 命令,类似于

$ git log --all --full-history -- <path-to-file>
$ git log --all --full-history -- **/thefile.*

或者我在堆栈上找到的东西,比如

grep -rnw '/path/to/somewhere/' -e 'pattern'

以及它的所有替代版本。

这些以及许多用于在附加到 Visual Studios 的实际 Azure Devops 后端站点中找到它的命令或路线……似乎都没有帮助。

希望有人知道解决此问题的方法或找到它的命令吗? 谢谢!

【问题讨论】:

这能回答你的问题吗? How to find and restore a deleted file in a Git repository 【参考方案1】:

如何搜索所有已删除的文件?

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

显示该文件的历史记录(或您在原始帖子中的内容)

git log --all -- DeletedFilePath
git show COMMIT_ID -- DeletedFilePath

【讨论】:

搜索已删除文件的命令有效,因为我确实看到了已删除的文件,但您在那里显示该文件历史记录的第二个命令似乎不起作用。例如,查看所有已删除文件的命令会生成 delete mode 100644 Mvc/Controllers/CarouselController.cs,但是当尝试输入 $ git log --all -- Mvc/Controllers/CarouselController.cs 时,它什么也不会生成,只是回到准备就绪状态以执行下一个命令。 我最终使用git log --diff-filter=D --summary | grep -E 'delete|^commit\s+\S+' 不仅显示了所有文件,还显示了相应的提交。感谢您的帮助!【参考方案2】:

PieDev 建议的第一个命令有效,但第二组命令没有返回任何信息,它们可能没有错,只是没有具体帮助我。

This solution 到一个类似的帖子引导我找到以下解决方案:

git log --diff-filter=D --summary | grep -E 'delete|^commit\s+\S+'

这将显示所有已删除的文件以及推送更改的提交。

【讨论】:

以上是关于Find commit 以在 Azure Devops 中查找非常旧的已删除文件的主要内容,如果未能解决你的问题,请参考以下文章

sh 设置Sublime Text以在git commit消息为空时打开(Win​​dows)

需要帮助获取 azure 媒体服务编码的视频以在 HTML5/DASH 中播放

Azure 数据工厂 - 查找值以在 ForEach 复制任务中选择语句

我们正在配置 Kubectl 以在 Azure Kubernetes 服务中管理我们的集群

我们可以在 IIS 中部署 Microsoft bot 应用程序以在没有 Azure 的情况下进行托管吗?

提取 Databricks 集群依赖项并将它们添加到 build.sbt 以在 Azure DevOps 中构建 jar