Yanıtlar:
Belirli bir dal için tüm dosyaları listelemek istiyorsanız, örneğin master
:
git ls-tree -r ana - sadece isim
Bu -r
seçenek, alt dizinlere girmesine ve halihazırda sürüm kontrolü altında bulunan her dosyayı yazdırmasına izin verecektir. İçinde bulunduğunuz diğer tüm şubelerin listesini almak HEAD
yerine de belirtebilirsiniz master
.
Var olan tüm dosyaların bir listesini almak istiyorsanız, buraya bakın :
git günlüğü --pretty = biçim: --name-only --diff-filter = A | sıralama
git ls-tree -r master --name-only
gerek olmadan ilk seçenekle aynı şeyi yapacağını unutmayın cut
. Ah ve belirtebilirsiniz HEAD
yerine master
sadece şu anda üzerinde ne olursa olsun şube için bu listeyi istiyorum.
-
? Bazı ek satırların bazı dosyaları ilkinden tekrarlanan ikinci bir sütunda göstermesine neden olur.
git ls-files
Komut neye ihtiyacınız yapacağız.
Kaynak: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-files
yerine git ls-tree -r master --name-only
kesinlikle basittir.
git-ls-files
ikili yoktur . Orada git
ile ikili ls-files
komutu. Belgelere bağlantı içeriğinde doğru, ancak teknik olarak eski bir ikili için.
git-commit
, git-init
, git-ls-files
vb programlar aslında alt komutları olmasına rağmen. git-ls-files
Büyük olasılıkla hiçbir zaman bir ikili dosya olmadı . Bunun nedeni, ikili git foo
komut yazarak bir komut kaydetmenize olanak sağlayan harici alt komut mekanizması ile tutarlı olmasıdır git-foo
.
git ls-files
sadece geçerli çalışma dizinindeki dosyaları basacaktır.
Örneğin, dotfiles ( core.worktree = /
) için bir git repo varsa, git root'un dışında dosyalar olacak ve bu basit komut artık işe yaramayacak.
Kısacası, bu işe yarayacak:
git --git-dir "`git rev-parse --git-dir`" \
-C "`git config core.worktree || pwd`" \
ls-files
Örnek:
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
Geçerli (kabuk) dizininize göre belirtilen yolları istiyorsanız , bu işi yapar:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
ve yukarıdaki örnekte yazdıracaktı
README
../../../etc/ssh/sshd_config
git ls-files
hepsini geçerli dizinde ve altında gösterir. Sadece depoda silinen dosyaları göstermiyor.
gitk
Etkileşimli havuz görüntüleyicisini de kullanabilirsiniz .
Lütfen resme bir bakın, sağ tarafta iki seçenek yaması ve Ağaç var. Ağaç seçerseniz, her bir işlem için klasör yapısını görüntüleyebilirsiniz.