是否可以在git中的整个repo历史中列出所有已删除的文件? 我讲的是一个空的回购的历史起点,其中添加,修改和抑制了文件。我想列出所有被抑制的文件。
答案 0 :(得分:2)
此?
git log --diff-filter=D --summary | grep delete | cut -d ' ' -f 5
这是为了从现在开始将已删除的文件列入回购的开头,以保持历史顺序:
git log --reverse --diff-filter=D --summary | grep delete | cut -d ' ' -f 5
答案 1 :(得分:1)
如{Arount的回答所示,--diff-filter=D
参数将帮助您查找已删除的文件。但是你可能想要考虑一些事情......
首先,不是使用--summary
然后通过其他工具来提取你想要的信息,为什么不让git给你你想要的信息呢?
git log --name-only --diff-filter-D --format=''
如果git的人类可读输出格式发生变化(或者如果你转移到没有unix实用程序的平台上),那么你不必担心你的命令中断了吗? ,如果您决定要添加有关删除文件的提交的信息,则很容易做到(通过修改--format
参数,例如
git log --name-only --diff-filter-D --format='%n---%n%s'
获取提交的文本描述,并确认它的启动效率可能更高。
当然,您仍然可以使用其他选项,例如--reverse
。
现在,正如所写,到目前为止显示的所有答案仅显示从HEAD
可到达的提交中删除的文件。如果您想查看存储库的整个历史记录 - 可以从所有分支机构访问的内容 - 您需要指定它。
git log --name-only --diff-filter-D --format='' --all
最后,请注意,在git的脑海中,"将文件A重命名为文件B"是"删除文件A,创建文件B"。默认情况下,git log
会尽量避免包含"文件A"在这种情况下,在--diff-filter=D
输出下,但在某些情况下它会潜入。如果你做想要看到每个文件消失(即使它重新出现在其他地方作为一部分移动),也包括--no-renames
选项。
git log --no-renames --diff-filter=D --format=''