Odpowiedzi:
Jeśli chcesz wyświetlić listę wszystkich plików dla określonej gałęzi, np. master
:
git ls-tree -r master - onlyname
The -r
opcja pozwoli recurse into podkatalogów i wydrukować każdy plik obecnie pod kontrolą wersji. Możesz również określić HEAD
zamiast master
aby uzyskać listę dla każdej innej gałęzi, w której możesz być.
Jeśli chcesz uzyskać listę wszystkich plików, które kiedykolwiek istniały, Spójrz tutaj :
git log --pretty = format: --name-status | cut -f2- | sort -u
git ls-tree -r master --name-only
zrobiłby to samo, co pierwsza opcja, bez potrzeby cut
. Ach, i możesz określić HEAD
zamiast master
jeśli chcesz tylko tę listę dla jakiejkolwiek gałęzi, w której aktualnie się znajdujesz.
The git ls-files
polecenie zrobi to, czego potrzebujesz.
Źródło: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-files
zamiast git ls-tree -r master --name-only
jest z pewnością prostsze.
git-ls-files
dwójkowy. Istnieje git
binarny z ls-files
dowództwo. Link do dokumentacji jest poprawny w treści, ale technicznie dla przestarzałego pliku binarnego.
git-commit
, git-init
, git-ls-files
itp., mimo że programy są w rzeczywistości podprogramami. Nigdy nie było git-ls-files
binarny, najprawdopodobniej. Rozumowanie jest takie, że jest zgodne z zewnętrznym mechanizmem podprogramu, który pozwala na rejestrację git foo
polecenie, pisząc a git-foo
dwójkowy.
git ls-files
wydrukuje tylko pliki w bieżącym katalogu roboczym.
Jeśli na przykład masz repozytorium git dla plików dotfiles ( core.worktree = /
), wtedy będziesz miał pliki poza katalogiem głównym git i to proste polecenie przestanie działać.
W skrócie, to zadziała:
git --git-dir "`git rev-parse --git-dir`" \
-C "`git config core.worktree || pwd`" \
ls-files
Przykład:
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
Jeśli chcesz określone ścieżki krewny do bieżącego katalogu (powłoki), wykonuje to zadanie:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
iw powyższym przykładzie wydrukowałaby
README
../../../etc/ssh/sshd_config
Możesz także użyć gitk
interaktywna przeglądarka repozytoriów.
Proszę spojrzeć na obrazek, po prawej stronie są dwie opcje: łatka i drzewo. Jeśli wybierzesz drzewo, możesz wyświetlić strukturę folderów dla każdego zatwierdzenia.