我有一个包含n个提交的Git存储库。
我有一个我需要的文件,它曾经在存储库中,我突然寻找并想“哦!那个文件去哪儿了?”
是否有一系列Git命令会告诉我“提交n-13时删除了文件really_needed.txt”?
换言之,如果不查看每个单独的提交,并且知道我的Git repo对每个文件都有更改,那么我能快速找到包含该文件的最后一个提交吗?
我有一个包含n个提交的Git存储库。
我有一个我需要的文件,它曾经在存储库中,我突然寻找并想“哦!那个文件去哪儿了?”
是否有一系列Git命令会告诉我“提交n-13时删除了文件really_needed.txt”?
换言之,如果不查看每个单独的提交,并且知道我的Git repo对每个文件都有更改,那么我能快速找到包含该文件的最后一个提交吗?
当前回答
Try:
git log --stat | grep file
其他回答
要显示更改文件的提交(即使文件已删除),请运行以下命令:
git log --full-history -- [file path]
如果只想查看删除文件的最后一次提交,请在上面的命令之外使用-1:
git log --full-history -1 -- [file path]
另请参阅我的文章:哪个提交删除了文件。
这对我有用:
git-log--**/Myfile.cs
如果包含--完整历史记录开关,它将显示许多与文件无关的更改。不知道为什么。
Try:
git log --stat | grep file
如果不记得确切的文件名,可以对目录执行同样的操作。查找发生删除的提交并在此之前签出提交。
git log -- the/dir/where/things/got/deleted/
我刚刚在这里添加了一个解决方案(在git中有没有方法列出存储库中的所有已删除文件?),用于通过使用正则表达式查找已删除文件的提交:
git log --diff-filter=D --summary | sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}'
这将返回名为some_dir(级联)的目录中删除的所有内容。其中\/some_dir\/is的任何sed正则表达式都可以。
OSX(感谢@triple和@keif)
git log --diff-filter=D --summary | sed -n -e '/^commit/h' -e '\:/:{' -e G -e 's/\ncommit \(.*\)/ \1/gp' -e }