663

コマンドラインgitを使用して、リポジトリで追跡されているファイルのリストをgitに表示させるにはどうすればよいですか?

4

5 に答える 5

783

ブランチで現在追跡されているすべてのファイルを一覧表示する場合は、次のmasterコマンドを使用できます。

git ls-tree -r master --name-only

これまでに存在したファイルのリスト(つまり、削除されたファイルを含む)が必要な場合:

git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'
于 2013-03-25T03:09:47.250 に答える
231

gitによって管理されるファイルは。で示されgit ls-filesます。そのマニュアルページをチェックしてください。

于 2013-03-25T03:09:57.593 に答える
44

受け入れられた回答には、現在のディレクトリのツリー内のファイルのみが表示されます。(現在のブランチで)コミットされた追跡済みファイルをすべて表示するには、次を使用します。

git ls-tree --full-tree --name-only -r HEAD
  • --full-treeリポジトリのルートディレクトリにいるかのようにコマンドを実行します。
  • -rサブディレクトリに再帰します。と組み合わせると--full-tree、コミットされ、追跡されたすべてのファイルが得られます。
  • --name-onlyファイルパスだけが必要な場合のSHA/権限情報を削除します。
  • HEAD追跡され、コミットされたファイルのリストが必要なブランチを指定します。これをmasterまたは他のブランチ名に変更できますが、これHEADは現在チェックアウトしているコミットです。

これは、受け入れられた回答から〜duplicate質問https://stackoverflow.com/a/8533413/4880003への方法です。

于 2019-03-09T20:16:18.387 に答える
7

これで色付きの出力が必要になる場合があります。

私はこのワンライナーを使用して、現在のブランチの現在のディレクトリにある追跡されたファイルとディレクトリを一覧表示します。

ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)

エイリアスとして追加することをお勧めします。

alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'

ファイルを再帰的にリストする場合:

'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)

そしてエイリアス:

alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"
于 2019-08-03T22:11:19.897 に答える
0

既存の回答に基づいてtree、少しきれいに表示するために使用できます。

git ls-tree --full-tree --name-only -r HEAD | tree --fromfile .

あなたはおそらくこれをページ付けしたいと思うでしょう:

git ls-tree --full-tree --name-only -r HEAD | tree -C --fromfile . | ${PAGER:-less}

これは確かにgitconfigのtreeエイリアスとしての場所に値します:)

于 2021-11-07T02:42:14.640 に答える