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

问题描述 投票:0回答:4

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

git
4个回答
175
投票

这是 Strager 解决方案的简化变体

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

编辑:感谢Jakub在评论中教我更多的东西,这个版本有更短的管道,并给了git更多机会把事情做好。

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

19
投票

这可以正确检查文件名是否曾经存在于 repo 中,而不仅仅是当前分支上。

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

4
投票

这里有两个有用的别名: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

3
投票

您可以运行

git-log --name-status
,它会回显如下内容:

commit afdbbaf52ab24ef7ce1daaf75f3aaf18c4d2fee0
Author: Your Name <[email protected]>
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
© www.soinside.com 2019 - 2024. All rights reserved.