web-dev-qa-db-ja.com

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

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

110
Anonymous

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

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

-rオプションはサブディレクトリに再帰して現在バージョン管理下にある各ファイルを印刷することを可能にします。 HEADの代わりにmasterを指定して、自分がいる可能性のある他のブランチのリストを取得することもできます。

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

git log --pretty =形式:--name-only --diff-filter = A | sort -u 
120
slhck

git ls-filesコマンドはあなたが必要とすることをするでしょう。

出典: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html

55
Mihai Capotă

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

たとえば、ドットファイル用のgitレポジトリ(core.worktree = /)がある場合は、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
AndiDog

gitkインタラクティブリポジトリビューアを使うこともできます。

0
JPaget