Gitリポジトリーに存在していたすべてのファイルをリストする


108

指定されたブランチに存在していたすべてのファイルを一覧表示するクリーンな方法はありますか?

回答:


135

これは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-statusの代わりに--name-onlyを使用して、パイプラインから 'cut -f2-'を削除できると思います。
JakubNarębski、2009

私のリポジトリの1つで、最初のコマンドと重複しない2番目のコマンドを使用して、かなりの数の重複行(出力の先頭にある空白行の数を含む)を取得しています。
Slipp D. Thompson、2012

ファイル名よりも少し詳しい情報が必要な場合:$ git log --pretty = format: "%h%an [%cd]:%s" --name-only | カット-f2- | 並べ替え-u | grep Filename.ext
Nitay 2014

3
注:--all孤立したヒントが1つ以上ある場合に必要になります。たとえば、1つのリポジトリ内の複数の個別の履歴。
ThorSummoner 2015

2
--diff-filter=Aは、既存のファイルをコピーすることによって作成されたファイルを無視するので、常にそれを追加することは必ずしも望ましいとは限りません。
cmbuckley

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

ここに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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.