我有一个不在工作树中的文件的文件路径和blob名称。如何找到此文件的提交内容?
修改
我可以使用git cat-file -p <blob>
cat文件,但log -S
也不能,log <path>
或bisect
给我任何结果。
可能会发生此文件在不同的分支中,甚至在某些已提取但未检出的分支
中答案 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)
从这里开始: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 start HEAD <initial_commit>
git bisect run [[ -e my_file_name.txt ]]
答案 3 :(得分:1)
仅选择已重命名或已删除的文件。