Jawaban:
Jika Anda ingin mendaftar semua file untuk cabang tertentu, mis. master
:
git ls-tree -r master --name-only
Itu -r
Opsi akan membiarkannya muncul kembali ke subdirektori dan mencetak setiap file yang saat ini di bawah kendali versi. Anda juga bisa menentukan HEAD
dari pada master
untuk mendapatkan daftar untuk cabang lain di mana Anda berada.
Jika Anda ingin mendapatkan daftar semua file yang pernah ada, Lihat disini :
log git --pretty = format: --name-status | cut -f2- | semacam -u
git ls-tree -r master --name-only
akan melakukan hal yang sama seperti opsi pertama, tanpa perlu cut
. Ah, dan Anda bisa menentukan HEAD
dari pada master
jika Anda hanya ingin daftar ini untuk cabang apa pun yang sedang Anda ikuti.
Itu git ls-files
Perintah akan melakukan apa yang Anda butuhkan.
Sumber: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-files
dari pada git ls-tree -r master --name-only
tentu lebih sederhana.
git-ls-files
biner. Ada git
biner dengan ls-files
perintah. Tautan ke dokumentasi benar dalam konten, tetapi secara teknis untuk biner yang ketinggalan zaman.
git-commit
, git-init
, git-ls-files
, dll. meskipun program tersebut sebenarnya adalah sub-perintah. Tidak pernah ada git-ls-files
biner, kemungkinan besar. Alasannya adalah bahwa ini konsisten dengan mekanisme sub-perintah eksternal, yang memungkinkan Anda untuk mendaftar a git foo
perintah dengan menulis a git-foo
biner.
git ls-files
hanya akan mencetak file di direktori kerja saat ini.
Jika, misalnya, Anda memiliki repo git untuk dotfiles ( core.worktree = /
), maka Anda akan memiliki file di luar git root dan perintah sederhana itu tidak akan berfungsi lagi.
Singkatnya, ini akan berhasil:
git --git-dir "`git rev-parse --git-dir`" \
-C "`git config core.worktree || pwd`" \
ls-files
Contoh:
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
Jika Anda ingin jalur yang ditentukan relatif ke direktori (shell) Anda saat ini, ini berfungsi:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
dan dalam contoh di atas, itu akan dicetak
README
../../../etc/ssh/sshd_config
Anda juga dapat menggunakan gitk
penampil repositori interaktif.
Silakan lihat gambar, di sebelah kanan ada dua opsi tambalan dan Pohon. Jika Anda memilih pohon, Anda dapat melihat struktur folder untuk setiap komit.