Git-列出当前源代码控制下的所有文件?

Git-列出当前源代码控制下的所有文件?

有没有办法列出 git 中当前源代码控制下的所有文件?(不仅仅是那些已经修改过的文件)。

答案1

如果要列出特定分支的所有文件,例如master

git ls 树-r master --name-only

-r选项将使其递归到子目录并打印当前受版本控制的每个文件。您还可以指定HEAD而不是master获取您可能所在的任何其他分支的列表。

如果你想获取所有曾经存在过的文件的列表,看这里

git 日志--pretty=格式:--name-only --diff-filter=A | sort -u

答案2

git ls-files命令将执行您需要的操作。

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

答案3

git ls-files将仅打印当前工作目录中的文件。

例如,如果你有一个用于点文件的 git repo(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

如果您希望指定路径相对的到你当前的(shell)目录,这完成了工作:

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

在上面的例子中,它将打印

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

答案4

截屏

请看图,右侧有两个选项 patch 和 Tree。如果选择 tree,则可以查看每个提交的文件夹结构。

相关内容