Git - 現在ソース管理下にあるすべてのファイルを一覧表示しますか?

Git - 現在ソース管理下にあるすべてのファイルを一覧表示しますか?

Git で現在ソース管理下にあるすべてのファイルを一覧表示する方法はありますか? (変更されたファイルだけではありません)。

答え1

特定のブランチのすべてのファイルを一覧表示したい場合、例master:

git ls-ツリー-r マスター --名前のみ

この-rオプションを使用すると、サブディレクトリを再帰的に調べ、現在バージョン管理下にある各ファイルを出力できます。 のHEAD代わりに を指定して、master現在いる他のブランチのリストを取得することもできます。

これまでに存在したすべてのファイルのリストを取得したい場合は、こちらをご覧ください:

git ログ--pretty=フォーマット: --name-only --diff-filter=A | ソート -u

答え2

このgit ls-filesコマンドは必要なことを実行します。

ソース:http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html

答え3

git ls-files現在の作業ディレクトリ内のファイルのみを印刷します。

たとえば、ドットファイル ( core.worktree = /) 用の git リポジトリがある場合、git ルートの外部にファイルが存在することになり、その単純なコマンドは機能しなくなります。

つまり、これは機能します:

git --git-dir "`git rev-parse --git-dir`" \
    -C "`git config core.worktree || pwd`" \
    ls-files

例:

mkdir ~/dotfiles
cd ~/dotfiles
git config core.worktree /

# Ignore all files by default, else Git will find all files under "/"
echo "*" > .git/info/exclude

# Add files at the git repo's root and somewhere in the work tree
touch README
git add -f README
git add -f /etc/ssh/sshd_config

# `git status` would now print:
# new file:   ../../../etc/ssh/sshd_config
# new file:   README
git status

git commit -m "Initial commit"

# At this point, `git ls-files` prints only:
# README
git ls-files

# But you can print all files inside the work tree. This will print:
# etc/ssh/sshd_config
# home/yourusername/dotfiles/README
git --git-dir "`git rev-parse --git-dir`" -C "`git config core.worktree || pwd`" ls-files

パスを指定したい場合相対的現在の(シェル)ディレクトリに以下を追加すると、次のようになります。

alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'

そして上記の例では、次のように印刷されます。

README
../../../etc/ssh/sshd_config

答え4

スクリーンショット

画像をご覧ください。右側には、patch と Tree の 2 つのオプションがあります。tree を選択すると、各コミットのフォルダー構造を表示できます。

関連情報