如何查找工作树中不存在的文件的提交

时间:2018-02-02 09:51:05

标签: git

我有一个不在工作树中的文件的文件路径和blob名称。如何找到此文件的提交内容?

修改

我可以使用git cat-file -p <blob> cat文件,但log -S也不能,log <path>bisect给我任何结果。

可能会发生此文件在不同的分支中,甚至在某些已提取但未检出的分支

4 个答案:

答案 0 :(得分:2)

根据要求,找到哪个提交在特定路径上有特定blob,git没有按钮,但是生成你想要的任何东西都很容易。

git log --all --reflog --format='%H:path/to/it %H' \
| git cat-file --batch-check='%(rest) %(objectname)' \
| awk '$2==myblob{print $1}' myblob=`git rev-parse mycommit:path/to/it` \
| git log --no-walk --stdin --oneline

只是前两行可能就足够了。

答案 1 :(得分:1)

使用git log path/to/file显示修改文件的每个提交,包括删除文件的提交。

答案 2 :(得分:1)

Git Log

从这里开始:https://git-scm.com/book/en/v2/Git-Tools-Searching

git log -S "some content in that file"

搜索文件名:

git log --follow -- my_file_name.txt

Git Bisect

git bisect start HEAD <initial_commit>
git bisect run [[ -e my_file_name.txt ]]

答案 3 :(得分:1)

git log --diff-filter=RD

仅选择已重命名或已删除的文件。