Git - 列出目前受原始碼控制的所有檔案?

Git - 列出目前受原始碼控制的所有檔案?

有沒有辦法列出目前在 git 原始碼控制下的所有檔案? (不只是那些已修改的)。

答案1

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

git ls-樹-r master --僅名稱

-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

如果你想指定路徑相對的到您目前的(shell)目錄,這可以完成工作:

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

在上面的例子中,它會被列印

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

答案4

螢幕截圖

請看圖片,右側有兩個選項 patch 和 Tree。如果選擇樹,您可以查看每個提交的資料夾結構。

相關內容