Using command line git, how can I make git show a list of the files that are being tracked in the repository?
35 Answers
If you want to list all the files currently being tracked under the branch master, you could use this command:
git ls-tree -r master --name-only If you want a list of files that ever existed (i.e. including deleted files):
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d' 11The files managed by git are shown by git ls-files. Check out its manual page.
The accepted answer only shows files in the current directory's tree. To show all of the tracked files that have been committed (on the current branch), use
git ls-tree --full-tree --name-only -r HEAD --full-treemakes the command run as if you were in the repo's root directory.-rrecurses into subdirectories. Combined with--full-tree, this gives you all committed, tracked files.--name-onlyremoves SHA / permission info for when you just want the file paths.HEADspecifies which branch you want the list of tracked, committed files for. You could change this tomasteror any other branch name, butHEADis the commit you have checked out right now.
This is the method from the accepted answer to the ~duplicate question .
1You might want colored output with this.
I use this one-liner for listing the tracked files and directories in the current directory of the current branch:
ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only) You might want to add it as an alias:
alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)' If you want to recursively list files:
'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only) And an alias:
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)" 1Building on the existing answers, you can use tree to view it a little prettier:
git ls-tree --full-tree --name-only -r HEAD | tree --fromfile . You probably want to paginate this:
git ls-tree --full-tree --name-only -r HEAD | tree -C --fromfile . | ${PAGER:-less} This certainly deserves a place as tree alias in the git config :)