Git komut satırı git'i kullanarak git'in depoda izlenen dosyaların bir listesini göstermesini nasıl sağlayabilirim?
Git komut satırı git'i kullanarak git'in depoda izlenen dosyaların bir listesini göstermesini nasıl sağlayabilirim?
Yanıtlar:
Şu anda şube altında izlenmekte olan tüm dosyaları listelemek istiyorsanız master, bu komutu kullanabilirsiniz:
git ls-tree -r master --name-only
Şimdiye kadar var olan dosyaların bir listesini istiyorsanız (örneğin, silinen dosyalar dahil):
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'
gitdoğrudan dizinleri sürümlendirmez . Bunun yerine dosyaları ve yollarını saklar. ls-treetüm sürüm dosyalarını çıktılar. Bu ayrımı daha iyi anlamak için boş bir dizini hazırlamayı deneyin git. Boş dizin hiçbir zaman aşamalı değişikliklerde görünmez. Böyle boş bir dizini sürümlendirmenin tek yolu, aslında dizini altındaki bir dosyayı sürümlendirmektir. Sürüm kontrolünde böyle boş bir yer tutucu dizinine ihtiyaç duyduğunuz kullanım durumları için, dizinin altında bir kukla dosya oluşturabilirsiniz. Umarım açıklama açıktır.
ls-tree mastergöstermez izlenen alana evreleme dosyaları.
Git tarafından yönetilen dosyalar ile gösterilir git ls-files. Kılavuz sayfasına göz atın.
ls... veyals -R
git ls-tree- görecelidir pwd.
Kabul edilen cevap yalnızca geçerli dizinin ağacındaki dosyaları gösterir. Tamamlanmış olan (geçerli dalda) izlenen tüm dosyaları göstermek için şunu kullanın:
git ls-tree --full-tree --name-only -r HEAD
--full-tree komutu deponun kök dizinindeymiş gibi çalıştırır.-ralt dizinlere geri çekilir. İle birlikte --full-tree, bu size tüm taahhüt, izlenen dosyaları verir.--name-only yalnızca dosya yollarını istediğiniz zaman için SHA / izin bilgilerini kaldırır.HEADizlenen, taahhüt edilen dosyaların listesini hangi dal için istediğinizi belirtir. Bunu masterveya herhangi bir şube adını değiştirebilirsiniz, ancak HEADşu anda kontrol ettiğiniz taahhüttür.Bu kabul edilen cevaptan ~ yinelenen soru https://stackoverflow.com/a/8533413/4880003 adresine verilen yöntemdir .
Bununla renkli çıktı isteyebilirsiniz.
Geçerli dalın geçerli dizininde izlenen dosyaları ve dizinleri listelemek için bu tek astarı kullanın:
ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)
Diğer ad olarak eklemek isteyebilirsiniz:
alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'
Dosyaları özyinelemeli olarak listelemek istiyorsanız:
'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)
Ve bir takma ad:
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"
glrSağladığınız ilk takma biçiminde bir sürümü daha tutarlı yapılan bu yüzden takma sen biraz garip görünüyordu İşletmesi: alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'. git version 2.20.1Debian 10 ile test edildi .