git list删除了整个repo历史中的文件

时间:2018-05-07 14:32:43

标签: git

是否可以在git中的整个repo历史中列出所有已删除的文件? 我讲的是一个空的回购的历史起点,其中添加,修改和抑制了文件。我想列出所有被抑制的文件。

2 个答案:

答案 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=''