列出Git存储库中曾经存在的所有文件


109

您有一种干净的方法来列出指定分支中曾经存在的所有文件吗?

Answers:


136

这是Strager 解决方案的简化版本:

git log --pretty=format: --name-status | cut -f2- | sort -u

编辑:感谢Jakub在评论中教我更多信息,此版本的管道更短,并为git提供了更多使事情正确的机会。

git log --pretty=format: --name-only --diff-filter=A | sort -u

8
@Dustlin:添加--diff-filter = A选项(仅列出已添加的文件)。如果您启用了重命名检测并在历史记录中进行了重命名,则当前版本(不使用sed过滤仅过滤添加的文件)将失败。我认为您可以使用--name-only而不是--name-status并从管道中删除“ cut -f2-”。
2009年

在我的一个回购中,第二条命令得到了很多重复行(包括输出开头的空白行),而第二条命令却没有与之重复。
斯利普·汤普森

如果您需要比文件名更多的信息:$ git log --pretty = format:“%h%an [%cd]:%s” 切-f2- | 排序-u | grep Filename.ext
Nitay 2014年

3
注意:--all如果您有多个孤立的提示,这是您需要的。例如,在一个仓库中有多个不同的历史记录。
ThorSummoner 2015年

2
--diff-filter=A忽略通过复制现有文件创建的文件,因此添加文件可能并不总是您想要的。
cmbuckley '18年

13

这确实是正确的检查,如果一个文件名是永远存在的回购不只是在当前分支。

git log --all --pretty=format: --name-only --diff-filter=A | sort - | grep fubar

3

您可以运行git-log --name-status,它回显类似以下内容:

commit afdbbaf52ab24ef7ce1daaf75f3aaf18c4d2fee0
Author: Your Name <your@email.com>
Date:   Tue Aug 12 13:28:34 2008 -0700

    Added test file.

A       test

然后解压缩添加的文件:

git-log --name-status | sed -ne 's/^A[^u]//p' | sort -u

2

这是两个有用的别名:FindFile ff和FindFilewithCopies ffc

# Find if one file ever had into repository
ff = "!git log --pretty=format: --name-status --all -M -B | sort -u | grep $1   #"
# The same as above but showing copied files
ffc = "!git log --pretty=format: --name-status --all -C -M -B | sort -u | grep $1 #"

您将获得有关文件名及其操作的信息。

样品使用:

$ git ff create
A       database/migrations/2014_10_12_000000_create_users_table.php
A       database/migrations/2014_10_12_100000_create_password_resets_table.php
A       database/migrations/2015_05_11_200932_create_boletin_table.php
A       database/migrations/2015_05_15_133500_create_usuarios_table.php
D       database/migrations/2015_05_12_000000_create_users_table.php
M       database/migrations/2015_05_11_200932_create_boletin_table.php
R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php

$ git ffc create
A       database/migrations/2014_10_12_000000_create_users_table.php
A       database/migrations/2014_10_12_100000_create_password_resets_table.php
A       database/migrations/2015_05_11_200932_create_boletin_table.php
A       database/migrations/2015_05_15_133500_create_usuarios_table.php
C052    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_11_210246_create_boletin_nosend_table.php
D       database/migrations/2015_05_12_000000_create_users_table.php
M       database/migrations/2015_05_11_200932_create_boletin_table.php
R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.