Pertanyaan Bagaimana daftar semua file dalam komit?


Saya mencari yang sederhana git perintah yang menyediakan daftar yang diformat dengan baik dari semua file yang merupakan bagian dari komit yang diberikan oleh hash (SHA1), tanpa informasi asing.

Saya telah mencoba:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Meskipun daftar file, itu juga termasuk informasi diff yang tidak diinginkan untuk masing-masing.

Apakah ada yang lain git perintah yang akan memberikan daftar yang saya inginkan, sehingga saya dapat menghindari parsing dari git show keluaran?


2171
2018-01-08 12:26


asal


Jawaban:


Cara yang disukai (Karena itu a pipa saluran air perintah; dimaksudkan sebagai program):

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

Cara lain (kurang disukai untuk skrip, karena ini a porselen perintah; dimaksudkan untuk menghadap ke pengguna)

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

  • Itu --no-commit-id menekan output ID komit.
  • Itu --pretty argumen menentukan string format kosong untuk menghindari cruft di awal.
  • Itu --name-only Argumen hanya menampilkan nama file yang terpengaruh (Thanks Hank).
  • Itu -r argumen adalah untuk mengulang ke sub-pohon

2853
2018-01-08 13:02



Jika Anda ingin mendapatkan daftar file yang diubah:

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

Jika Anda ingin mendapatkan daftar semua file dalam komit, Anda dapat menggunakan

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

189
2018-01-14 19:22



Saya hanya akan menganggap itu gitk tidak diinginkan untuk ini. Kalau begitu, cobalah git show --name-only <sha>.


180
2018-01-08 12:34



Saya pribadi menggunakan kombinasi --stat dan --oneline dengan menunjukkan perintah:

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

Jika Anda tidak suka / ingin statistik penambahan / penghapusan, Anda dapat mengganti --stat dengan --name-saja

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

113
2017-07-11 23:21



Baru-baru ini saya perlu daftar semua file yang diubah antara dua commit. Jadi saya menggunakan perintah ini (juga * nix specific)

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

Memperbarui: Atau seperti yang ditunjukkan Ethan di bawah ini

git diff --name-only START_COMMIT..END_COMMIT

Menggunakan --name-status juga akan menyertakan perubahan (ditambahkan, dimodifikasi, dihapus, dll) di samping setiap file

git diff --name-status START_COMMIT..END_COMMIT

58
2018-04-26 12:23



Anda juga bisa melakukannya

git log --name-only

dan Anda dapat menelusuri berbagai komit, mengkomit pesan, dan mengubah file.

Ketik q untuk mendapatkan jawaban Anda kembali.


56
2018-05-27 01:20



Bentuk paling sederhana:

git show --stat (hash)

Itu lebih mudah diingat dan itu akan memberi Anda semua informasi yang Anda butuhkan.

Jika Anda benar-benar hanya menginginkan nama-nama file yang dapat Anda tambahkan --name-only pilihan.

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


48
2017-07-16 00:06



saya menggunakan berubah alias cukup sering. Untuk mengaturnya:

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

kemudian:

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)

Perintah serupa yang mungkin berguna:

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