Bir commit'teki tüm dosyalar nasıl listelenir?

Bir hash (SHA1) ile verilen işlemin parçası olan tüm dosyaların güzel bir şekilde biçimlendirilmiş bir listesini sağlayan, gereksiz bilgi içermeyen basit bir git komutu arıyorum.

Denedim:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

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

Sadece istediğim listeyi sağlayacak, böylece git show çıktısından ayrıştırmaktan kaçınabileceğim başka bir git komutu var mı?

Çözüm

Tercih Edilen Yol (çünkü bu bir tesisat komutudur; programatik olması amaçlanmıştır):

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

Başka Bir Yol (komut dosyaları için daha az tercih edilir, çünkü bu bir porcelain komutudur; kullanıcıya yönelik olması amaçlanmıştır)

$ 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 karışıklığı önlemek için boş bir format dizesi belirtir.
  • --name-only argümanı sadece etkilenen dosya isimlerini gösterir (Teşekkürler Hank). Her dosyaya ne olduğunu görmek istiyorsanız bunun yerine --name-status kullanın (Deleted, Modified, Added)
  • r` argümanı alt ağaçlara özyineleme yapmak içindir
Yorumlar (24)

Bunun için gitk'in istenmediğini varsayacağım. Bu durumda,git show --name-only ` komutunu deneyin.

Yorumlar (3)

"git show --stat" (teşekkürler Ryan) ve birkaç sed komutunun bir kombinasyonu verileri sizin için kırpacaktır:

git show --stat  | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"

Bu sadece değiştirilen dosyaların listesini üretecektir.

Yorumlar (0)