Git - Kaynak kontrolü altındaki tüm dosyalar listeleniyor mu?


122

Halen kaynak kontrolünde olan tüm dosyaları git listesinde listelemenin bir yolu var mı? (Sadece değiştirilmiş olanlar değil).

Yanıtlar:


129

Belirli bir dal için tüm dosyaları listelemek istiyorsanız, örneğin master:

git ls-tree -r ana - sadece isim

Bu -rseç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 HEADyerine 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

1
Teşekkürler slhck, tam olarak neyin peşindeyim - ve ikincisini de bilmek faydalı. İzin verildiğinde 5 buçuk dakika içinde doğru olarak işaretleyeceğim. :-)
Anonim

3
Cevap için teşekkürler. Bunu arıyordum. Buna git ls-tree -r master --name-onlygerek olmadan ilk seçenekle aynı şeyi yapacağını unutmayın cut. Ah ve belirtebilirsiniz HEADyerine mastersadece şu anda üzerinde ne olursa olsun şube için bu listeyi istiyorum.
Maurits,

6
"Git ls-files" çalıştırmak size birkaç karakter kazandıracak :)
Zain R

Neden son verildi -? Bazı ek satırların bazı dosyaları ilkinden tekrarlanan ikinci bir sütunda göstermesine neden olur.
Adrian

@Adrian Hiçbir fikrim yok, o zaman kopyalandı, şimdi düzeltildi.
slhck

61

git ls-filesKomut neye ihtiyacınız yapacağız.

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


4
git ls-filesyerine git ls-tree -r master --name-onlykesinlikle basittir.
karatedog

1
Maalesef, düzenlemem geçersizdi. Şu anki git'te git-ls-filesikili yoktur . Orada gitile ikili ls-fileskomutu. Belgelere bağlantı içeriğinde doğru, ancak teknik olarak eski bir ikili için.
JonnyJD

@JonnyJD, düzenlemenizin bir yorum olması gerektiğinden, muhtemelen geçersiz olarak işaretlendi.
Ascherer 12:14,

1
@JonnyJD Tüm Git insan sayfalar olarak adlandırılır git-commit, git-init, git-ls-filesvb programlar aslında alt komutları olmasına rağmen. git-ls-filesBüyük olasılıkla hiçbir zaman bir ikili dosya olmadı . Bunun nedeni, ikili git fookomut yazarak bir komut kaydetmenize olanak sağlayan harici alt komut mekanizması ile tutarlı olmasıdır git-foo.
Radon Rosborough

4

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 v2.21'de, git ls-fileshepsini geçerli dizinde ve altında gösterir. Sadece depoda silinen dosyaları göstermiyor.
Adrian

0

gitkEtkileşimli havuz görüntüleyicisini de kullanabilirsiniz .


1
Bu bir araçtan bahseder, ancak gerçekten "nasıl" cevabını vermez. Bunu işlem yapılabilir bir çözüme genişletebilir misiniz? Sadece birini araştırma yönüne yöneltmek, kendi çözümlerini geliştirmeleri için yorum yapmak daha uygundur. Teşekkürler. incelemeden
fixer1234

-2

Ekran görüntüsü

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.


Lütfen ekran görüntüsüne daha iyi bir şekilde bağlı kalmayı düşünün, böylece fazla sansürlemenize gerek kalmaz.
Thorbjørn Ravn Andersen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.