Saya cari yang sederhana git
perintah yang menyediakan baik diformat daftar semua file yang merupakan bagian dari komitmen yang diberikan oleh hash (SHA1), dengan tidak ada informasi asing.
Saya telah mencoba:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Meskipun ini daftar file, hal ini juga termasuk yang tidak diinginkan diff informasi untuk masing-masing.
Ada yang lain git
perintah yang akan memberikan hanya daftar yang saya inginkan, sehingga saya bisa menghindari penguraian dari git show
output?
Cara yang lebih disukai (karena itu's plumbing perintah; dimaksudkan untuk menjadi program):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Cara lain (kurang disukai untuk script, karena itu's porcelain perintah; dimaksudkan untuk menjadi user-facing)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
- tidak-melakukan-id
menekan komit ID output.--cukup
argumen menentukan format string kosong untuk menghindari cacat pada awal.--nama-satunya
argumen hanya menunjukkan nama file yang terkena (Terima kasih Hank). Gunakan --nama-status
sebaliknya, jika anda ingin melihat apa yang terjadi untuk masing-masing file (Deleted, Modified, Added)-r
argumen untuk recurse menjadi sub-pohonJika 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 di commit, anda dapat menggunakan
git ls-tree --name-only -r <commit-ish>
Saya pribadi menggunakan kombinasi --stat dan --oneline dengan show perintah:
git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD
Jika anda tidak suka/ingin penambahan/penghapusan statistik, anda dapat mengganti --stat dengan --nama-satunya
git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD
Baru-baru ini saya butuhkan untuk menampilkan semua file yang berubah antara dua komit. Jadi saya menggunakan ini (juga *nix tertentu) perintah
git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq
Update: Atau sebagai Ethan poin di bawah ini
git diff --name-only START_COMMIT..END_COMMIT
Menggunakan --nama-status
juga akan mencakup perubahan (ditambahkan, diubah, dihapus dll) selanjutnya untuk masing-masing file
git diff --name-status START_COMMIT..END_COMMIT
Bentuk yang paling sederhana:
git show --stat (hash)
Yang's mudah untuk diingat dan itu akan memberi anda semua informasi yang anda butuhkan.
Jika anda benar-benar ingin hanya nama-nama file yang anda bisa tambahkan `--nama-satunya pilihan.
git show --statistik --nama-satunya (hash)
Saya menggunakan mengubah alias cukup sering. Untuk memasangnya:
git config --global alias.changed 'show --pretty="format:" --name-only'
maka:
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)
Mirip perintah yang mungkin berguna:
git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only
Menggunakan standar git diff perintah (juga baik untuk scripting):
git diff --name-only <sha>^ <sha>
Jika anda ingin juga status dari file yang berubah:
git diff --name-status <sha>^ <sha>
Ini bekerja dengan baik dengan menggabungkan melakukan.
OK, ada beberapa cara untuk menampilkan semua file dalam tertentu melakukan...
Untuk mengurangi info dan menunjukkan nama-nama saja file-file yang penting, anda hanya dapat menambahkan --nama-satunya
atau --nama-status
bendera..., bendera ini hanya menunjukkan nama file yang berbeda dari sebelumnya melakukan seperti yang anda inginkan...
Sehingga anda dapat melakukan git diff
diikuti oleh --nama-satunya
, dengan dua melakukan hash setelah <sha0> <sha1>
, sesuatu seperti di bawah ini:
git diff --name-only 5f12f15 kag9f02
Saya juga membuat gambar di bawah ini untuk menampilkan semua langkah-langkah untuk pergi melalui dalam situasi ini:
Ada's juga git argente registry cleaner
, yang lebih rendah dari git log
NAME
git-whatchanged - Show logs with difference each commit introduces
Ini output yang melakukan ringkasan dengan daftar file-file di bawah ini dengan mode dan jika ada yang ditambahkan(A
), dihapus(D
) atau dimodifikasi(M
);
$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363
Akan memberikan sesuatu seperti:
commit f31a441398fb7834fde24c5b0c2974182a431363
Author: xx <[email protected]>
Date: Tue Sep 29 17:23:22 2015 +0200
added fb skd and XLForm
:000000 100644 0000000... 90a20d7... A Pods/Bolts/Bolts/Common/BFCancellationToken.h
:000000 100644 0000000... b5006d0... A Pods/Bolts/Bolts/Common/BFCancellationToken.m
:000000 100644 0000000... 3e7b711... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h
:000000 100644 0000000... 9c8a7ae... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m
:000000 100644 0000000... bd6e7a1... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h
:000000 100644 0000000... 947f725... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m
:000000 100644 0000000... cf7dcdf... A Pods/Bolts/Bolts/Common/BFDefines.h
:000000 100644 0000000... 02af9ba... A Pods/Bolts/Bolts/Common/BFExecutor.h
:000000 100644 0000000... 292e27c... A Pods/Bolts/Bolts/Common/BFExecutor.m
:000000 100644 0000000... 827071d... A Pods/Bolts/Bolts/Common/BFTask.h
...
Saya tahu jawaban ini doesn't benar-benar cocok "dengan tidak ada informasi asing.", tapi aku masih berpikir ini adalah daftar yang lebih berguna maka hanya nama file.
coba perintah ini untuk nama dan perubahan jumlah garis
git show --stat <commit-hash>
hanya menunjukkan nama file
git show --stat --name-only <commit-hash>
untuk mendapatkan lalu melakukan hash kemudian mencoba perintah ini
git log -1
terakhir melakukan dengan menunjukkan nama file dan file status memodifikasi,membuat, atau menghapus
git log -1 --oneline --name-status <commit-hash>
atau untuk semua
git log
untuk lebih maju git log informasi yang membaca artikel ini
Daftar file-file yang berubah dalam melakukan:
git diff --name-only SHA1^ SHA1
Ini doesn't tampilkan pesan log, tambahan baris, atau kekacauan. Ini bekerja untuk setiap komit, tidak hanya satu saat ini. Tidak yakin mengapa hal itu belum't cukup telah disebutkan belum, jadi saya'm menambahkan.