Soru Bir dosyadaki tüm dosyalar nasıl listelenir?


Basit bir şey arıyorum git Komut (SHA1) tarafından verilen ve hiçbir dış bilgiyle birlikte verilmiş olan tüm dosyaların güzel biçimlendirilmiş bir listesini sağlayan komut.

Denedim:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Dosyaları listelemesine rağmen, her biri için istenmeyen fark bilgilerini de içerir.

Başka var mı git İstediğim listeyi sağlayacak komut, böylece ayrıştırmaktan git show çıktı?


2179
2018-01-08 12:26


Menşei


Buraya biraz farklı bir şey aramaya geldim. Bir dizi işlem için değiştirilmiş tüm dosyaları görmek ve kullanarak sarmak istiyorum git log --until 2013-05-21 --pretty="short" --name-only iyi bir etkiye sahip. - Limited Atonement
Önceki tüm değişiklikleri almak için bu komutu kullanın n kadar taahhüt eder master: git diff-tree --name-status -r @{3} master - ako


Cevaplar:


Tercih edilen yol (çünkü bu bir su tesisatı komut; programatik olması gerekiyordu):

$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js

Diğer yol (komut dosyaları için daha az tercih edilir, çünkü bu bir porselen komut; Kullanıcıya dönük olması gerekiyordu)

$ git show --pretty="" --name-only bd61ad98    
index.html
javascript/application.js
javascript/ie6.js

  • --no-commit-id commit ID çıktısını bastırır.
  • --pretty argüman, başlangıçtaki akıntıyı önlemek için boş bir format dizgisini belirtir.
  • --name-only argüman sadece etkilenen dosya isimlerini gösterir (Teşekkürler Hank).
  • -r argüman alt ağaçlara tekrarlamaktır

2866
2018-01-08 13:02



porselen komutları bir komut dosyasında kullanılmamalıdır (git help) ,. Lütfen kullan git diff-tree --no-commit-id --name-only -r <commit> yerine - drizzt
bu not alınmalı diff-tree kök işlemine bakarken çalışmaz. - jbranchaud
Değiştiriliyor --name-onlyseçeneği ile --name-status daha net bir özet verecektir. - Kurt Zhong
Kök üzerinde çalışmasını istiyorsanız, --root bayrağını kullanın. Man sayfasından: "Ne zaman --root belirtilirse, ilk taahhüt büyük bir yaratım olayı olarak gösterilecektir. Bu, NULL ağacına karşı bir farkla eşdeğerdir." - Chris
git log --name-only -n 1 <hash> Son işlem şöyle olurdu: git log --name-only -n 1 HEAD~1..HEAD - Kurt


Değiştirilen dosyaların listesini almak isterseniz:

git diff-tree --no-commit-id --name-only -r <commit-ish>

Bir dosyadaki tüm dosyaların listesini almak isterseniz,

git ls-tree --name-only -r <commit-ish>

189
2018-01-14 19:22



Ls-tree with --name-only, 1.6.4.4 veya 1.6.3.3 üzerinde çalışıyor gibi görünmüyor. Bunun bir böcek olduğunu mu düşünüyorsun? - krosenvold
Burada parametrelerin sırasının önemli olduğu ortaya çıkıyor. Gönderinizdeki mesaj çalışmıyor, yanıtınızdaki kişi işe yaramaz. yapar iş - en azından yazınızı güncelleyene kadar;) - krosenvold
Geçiş --no-commit-id SHA1'i yazdırmaktan kaçınmak için, git diff-tree --no-commit-id --name-only -r <commit-ish> - John Mellor
@CoDEmanX: Eklemeyi kaçırmadınız -r / -t seçenek var mı Çünkü diff-tree hem değiştirilmiş hem de eklenmiş dosyaları işler. Tüm yeni (eklenmiş) dosyaları listelemek istiyorsanız git diff-tree -r --name-only --no-commit-id --diff-filter=A <commit-ish> - Jakub Narębski
Bu önemsiz değil mi? - Niklas Rosencrantz


Ben sadece varsayalım gitk bunun için istenmez. Bu durumda, deneyin git show --name-only <sha>.


180
2018-01-08 12:34



- İsim sadece ihtiyaç duyduğum çoğu durumda yeterlidir; Bu nedenle, en kısa çözüm (ve 1 denemede hatırladığım tek şey) kısaltıldı. - Erik S
Veya --name-status. - Neil Traft
gitk tam olarak neyse peşindeyim - teşekkürler. bu soru şu anda bir Google aramada ortaya çıkan ilk şeydir, bu yüzden insanlar bunu bilmeye değer gitk mevcut! Geri kalanınız komuta hattınızı bozabilir; Sadece o güzel UI ekranına bakacağım :) - Mr Spoon
Gerçekten CLI gitmeyi seven biri olarak, gitk aslında dosyaları incelemek ve yayının açık olduğu dosyayı görüntülemek için iyi bir yoldur. Örneğin. Bir akrandan bir canavarı işleyişini inceleyen kod. - Elijah Lynn


Şahsen ben kombinasyonunu kullanıyorum --stat ve --Tek çizgi ile göstermek komut:

git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD

Ekleme / çıkarma istatistiklerini beğenmezseniz / isterseniz, değiştirebilirsiniz --stat ile --name okunur

git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD

114
2017-07-11 23:21



Bu harika! Temel olarak Github'un bir taahhüt görünümünün en üstünde gösterdiği dosya özetini verir. Teşekkürler. - trisweb
Çok hoş. Takma ad tanımlamak için: alias gits='git show --stat --oneline', sonra gits tek başına en son değişiklikleri gösterir (HEAD’da), gits b24f5fb herhangi bir revizyonun değişikliklerini göstermek için kullanılabilir. - Brent Faust
Bir tane de takma ad oluşturulabilir ... ör. belki git config --global alias.changes 'show --stat --oneline'. Sonra yazabilirsiniz git changes (isteğe bağlı bir commit-ish ile) ve yukarıdaki ilk örneklerden çıktıyı alın. - lindes
Windows için Git çift tırnak gerektirir: git config --global alias.changes "show --stat --oneline" - Alchemistmatt
Güzel. Ve kabul edilen cevabın aksine, git show ayrıca saklı değişikliklerin incelenmesine de çalışır: ör. git show --stat --oneline stash@{1} - Jeff Ward


Son zamanlarda değiştirilen tüm dosyaları iki işlem arasında listelemem gerekiyordu. Ben de bunu (ayrıca * nix özel) komutunu kullandım

git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq

Güncelleştirme: Ya da Ethan'ın aşağıda belirttiği gibi

git diff --name-only START_COMMIT..END_COMMIT

kullanma --name-status ayrıca her dosyanın yanında bulunan değişikliği (eklenmiş, değiştirilmiş, silinmiş vb.) içerecektir

git diff --name-status START_COMMIT..END_COMMIT

58
2018-04-26 12:23



Sadece denedim: Windows'ta git bash'ta iyi çalışıyor. - OregonGhost
Eğer kullanırsan git diff --name-status START_COMMIT..END_COMMIT o zaman takip etmene gerek yok |sort | uniq. - Ethan
Yukarıdaki yorum için düzeltme: git diff --name-only START_COMMIT..END_COMMIT - Ethan
Aradığım şey bu. Nasıl kullandım: git diff --name-only START_COMMIT..END_COMMIT | grep -v -e '**.png' -e '**.xml'. Kod değişikliklerinin bir listesini sadece binlerce PNG ve XML düzenini ekleyen büyük bir PR için istedim. - AutonomousApps


Sen de yapabilirsin

git log --name-only

ve çeşitli taahhütlere, mesajlara ve değişen dosyalara göz atabilirsiniz.

Geri bildiriminizi almak için q yazın.


56
2018-05-27 01:20





En basit hal:

git show --stat (hash)

Hatırlanması daha kolay ve ihtiyacınız olan tüm bilgileri size verecektir.

Eğer gerçekten sadece dosyaların isimlerini eklemek istiyorsanız --name-only seçeneği.

git show --stat --name-only (hash)


48
2017-07-16 00:06



Cevabımın basit ve doğru olup olmadığını bilmek istiyorum, olumsuz oy aldım. - VaTo
Bir tahminde bulunsaydım (ve sadece tahmin ediyorum, çünkü cevabını oylayan ben olmasaydım), orijinal poster başka bir bilgi olmaksızın dosyaların sadece bir listesini istemişti. Sağladığınız komut, işleme ve dosyada yapılan değişikliklerin türlerine ilişkin bilgileri gösterir. Cevabınız herhangi bir teselli ise, cevabınızı başka bir şey için yararlı buldum. - J. Gregory Wright
@ J.GregoryWright haklı olabilirsiniz, bu durumda - sadece isim ekleyeceğim ve işte bu kadar. Ancak, hatırladığım daha kolay olduğundan, sağladığım komutu kullanıyorum. Ama ben bu iki seçeneği hemen yerine koyacağım, öneri için teşekkürler! - VaTo
- Sadece-isim, yazar, tarih ve taahhüt mesajı gibi bilgileri içeren birkaç başlık satırı içerir. - devoured elysium
En iyi cevap IMO, diğerleri hiç de unutulmaz değil. - Amalgovinus


kullanırım değişmiş takma ad sık sık. Bunu kurmak için:

git config --global alias.changed 'show --pretty="format:" --name-only'

sonra:

git changed (lists files modified in last commit)   
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)

Yararlı olabilecek benzer komutlar:

git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only

45
2018-04-29 13:13



takma ad almak - Clint Eastwood


Standart git diff komutunu kullanma (ayrıca betik için iyi):

git diff --name-only <sha>^ <sha>

Değiştirilen dosyaların durumunu da isterseniz:

git diff --name-status <sha>^ <sha>

Bu birleştirme taahhütleri ile iyi çalışır.


35
2018-04-29 14:53



Bu, tek bir taahhütlü kullanım için bir dizi taahhütle uğraşırken en basit cevaptır. git show --name-only <sha> - thebugfinder
(önceki yorumumu dikkate almayın) bu, bir dizi taahhütle veya tek bir taahhütle uğraşırken en basit cevaptır. AFERİN! - thebugfinder


$ git log 88ee8 ^ .. 88ee8 - sadece isim --pretty = "format:"

23
2018-01-08 14:11





İki değişiklik arasındaki değiştirilmiş dosyaların listesini almak için bunu kullanıyorum:

git diff --name-status <SHA1> <SHA2> | cut -f2

15
2018-03-28 07:37



kullanım --name-only ve sen atlayabilirsin cut komuta - Newtonx
Evet ama durum oldukça kullanışlı olabilir (isntance için, silinmiş olanlar hariç tüm dosyaları görüntülemek için grep isteyebilirsiniz git diff --name-status .. | grep ^[^D] | cut -f2 - Pierre-Adrien Buisson