Saya mencari git
perintah sederhana yang menyediakan daftar semua file yang diformat dengan baik yang merupakan bagian dari komit yang diberikan oleh hash (SHA1), tanpa informasi tambahan.
Saya telah mencoba:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Meskipun daftar file, itu juga mencakup informasi diff yang tidak diinginkan untuk masing-masing.
Apakah ada git
perintah lain yang hanya akan memberikan daftar yang saya inginkan, sehingga saya dapat menghindari parsing dari git show
output?
git log --until 2013-05-21 --pretty="short" --name-only
dengan efek yang baik.n
komit sebelumnya hinggamaster
:git diff-tree --name-status -r @{3} master
git diff --name-only master
- Untuk membuat daftar SEMUA file yang diubah pada cabang saat ini, dibandingkan dengan cabang utama.Jawaban:
Cara yang Dipilih (karena ini adalah perintah pipa ledeng ; dimaksudkan untuk diprogram):
Cara Lain (kurang disukai untuk skrip, karena ini adalah perintah porselen ; dimaksudkan untuk menghadap pengguna)
--no-commit-id
menekan komit ID output.--pretty
argumen menentukan sebuah format string kosong untuk menghindari cruft di awal.--name-only
argumen hanya menunjukkan nama file yang dipengaruhi (Thanks Hank). Gunakan--name-status
sebaliknya, jika Anda ingin melihat apa yang terjadi pada masing-masing file ( D dihapus, M odified, A dded)-r
argumen adalah untuk recurse ke dalam sub-pohonsumber
diff-tree
tidak akan berfungsi ketika melihat root commit.--name-only
opsi dengan--name-status
akan memberikan ringkasan yang lebih jelas.git log --name-only -n 1 <hash>
Komit terakhir adalah:git log --name-only -n 1 HEAD~1..HEAD
git show
adalah "porselen" (dimaksudkan untuk menghadap pengguna) dangit diff-tree
"pipa ledeng" (dimaksudkan untuk digunakan secara terprogram, misalnya dari skrip). Antarmuka untuk yang pertama dapat berubah dari waktu ke waktu (sehingga pengelola git bisa turun--name-only
meskipun saya tidak membayangkan mereka akan melakukannya ) untuk alasan penggunaan, sedangkan antarmuka untuk yang terakhir akan dijaga setestabil mungkin untuk alasan kompatibilitas.Jika Anda ingin mendapatkan daftar file yang diubah:
Jika Anda ingin mendapatkan daftar semua file dalam komit, Anda dapat menggunakan
sumber
git ls-tree --name-only HEAD
(Parameter <commit-ish> diperlukan ; dalam contoh ini adalah HEAD) berfungsi untuk saya dengan git versi 1.6.4.3--no-commit-id
untuk menghindari pencetakan SHA1, seperti:git diff-tree --no-commit-id --name-only -r <commit-ish>
-r
/-t
opsi, bukan? Karena diff-tree menangani file yang dimodifikasi dan ditambahkan. Jika Anda ingin membuat daftar semua file baru (ditambahkan), gunakangit diff-tree -r --name-only --no-commit-id --diff-filter=A <commit-ish>
Saya hanya akan berasumsi bahwa
gitk
tidak diinginkan untuk ini. Kalau begitu, cobagit show --name-only <sha>
.sumber
--name-status
.gitk
sebenarnya merupakan cara yang layak untuk meninjau file dan menampilkan file yang digunakan oleh diff. mis. Kode meninjau monster yang dikomit dari rekan.Saya pribadi menggunakan kombinasi --stat dan --oneline dengan perintah show :
Jika Anda tidak suka / ingin statistik penambahan / penghapusan, Anda dapat mengganti --stat dengan --name-only
sumber
alias gits='git show --stat --oneline'
makagits
dengan sendirinya menunjukkan perubahan terbaru (dalam HEAD), sementaragits b24f5fb
dapat digunakan untuk menampilkan perubahan revisi.git config --global alias.changes 'show --stat --oneline'
. Kemudian Anda dapat mengetikgit changes
(dengan komit opsional) dan mendapatkan output dari contoh pertama di atas.git config --global alias.changes "show --stat --oneline"
git show
juga berfungsi untuk meninjau perubahan yang disimpan: mis.git show --stat --oneline stash@{1}
Anda juga bisa melakukannya
dan Anda dapat menelusuri berbagai komit, melakukan pesan, dan file yang diubah.
Ketik q untuk mendapatkan kembali prompt Anda.
sumber
git show 5944ad2a8b5 --name-only
untuk mendaftar nama komit tertentuBaru-baru ini saya perlu membuat daftar semua file yang diubah antara dua komit. Jadi saya menggunakan perintah ini (juga * spesifik nix)
Pembaruan : Atau seperti yang ditunjukkan Ethan di bawah ini
Menggunakan
--name-status
juga akan menyertakan perubahan (ditambahkan, diubah, dihapus dll) di sebelah setiap filesumber
git diff --name-status START_COMMIT..END_COMMIT
maka Anda tidak perlu trailing|sort | uniq
.git diff --name-only START_COMMIT..END_COMMIT
git diff --name-only START_COMMIT..END_COMMIT | grep -v -e '**.png' -e '**.xml'
. Saya ingin daftar perubahan kode hanya untuk PR besar yang telah menambahkan ribuan tata letak PNG dan XML.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 file, Anda dapat menambahkan
--name-only
opsi.git show --stat --name-only (hash)
sumber
Saya menggunakan alias yang diubah cukup sering. Untuk mengaturnya:
kemudian:
Perintah serupa yang mungkin berguna:
sumber
Menggunakan
Ini akan menunjukkan kepada Anda komit, pesan, file berubah dan apakah itu diubah, dibuat, ditambahkan atau dihapus. Agak dari perintah all-in-one.
sumber
Menggunakan perintah git diff standar (juga bagus untuk skrip):
Jika Anda ingin juga status file yang diubah:
Ini bekerja dengan baik dengan menggabungkan komitmen.
sumber
coba perintah ini untuk nama dan ubah nomor baris
hanya menampilkan nama file
untuk mendapatkan hash komit terakhir, lalu coba perintah ini
komit terakhir dengan menunjukkan nama file dan mengubah status file, membuat atau menghapus
atau untuk semua
untuk informasi log git lebih lanjut baca artikel ini
https://devhints.io/git-log-format
https://devhints.io/git-log
sumber
sumber
BAIK, ada beberapa cara untuk menampilkan semua file dalam komit tertentu ...
Untuk mengurangi info dan hanya menampilkan nama file yang dikomit, Anda bisa menambahkan
--name-only
atau--name-status
menandai ..., flag-flag ini hanya menunjukkan kepada Anda nama-nama file yang berbeda dari komit sebelumnya seperti yang Anda inginkan ...Jadi Anda dapat melakukan
git diff
diikuti oleh--name-only
, dengan dua hash setelah<sha0> <sha1>
, sesuatu seperti di bawah ini:Saya juga membuat gambar di bawah ini untuk menunjukkan semua langkah yang harus dilalui dalam situasi ini:
sumber
Saya menggunakan ini untuk mendapatkan daftar file yang dimodifikasi antara dua perubahan:
sumber
git diff --name-status .. | grep ^[^D] | cut -f2
Saya suka menggunakan
sumber
Ada juga
git whatchanged
, yang lebih rendah daripada tingkatgit log
Ini menghasilkan ringkasan komit dengan daftar file di bawahnya dengan modenya dan jika ada ditambahkan (
A
), dihapus (D
) atau diubah (M
);Akan memberikan sesuatu seperti:
Saya tahu jawaban ini tidak benar-benar cocok "tanpa informasi yang asing.", Tapi saya masih berpikir daftar ini lebih berguna daripada hanya nama file.
sumber
whatchanged
daripada memasok parameter.Saya suka ini:
sumber
A
&D
(tambah dan hapus) mundur, karena ini menunjukkan perbedaan dari komit yang ditentukan ke komit sebelumnya, alih-alih sebaliknya. Seharusnya begitugit diff --name-status <SHA1>^ <SHA1>
.Gunakan perintah satu baris sederhana, jika Anda hanya ingin daftar file diubah di komit terakhir:
sumber
Daftar file yang diubah dalam komit:
Ini tidak menampilkan pesan log, baris baru tambahan, atau kekacauan lainnya. Ini berfungsi untuk semua komit, bukan hanya komit saat ini. Tidak yakin mengapa itu tidak cukup disebutkan belum, jadi saya menambahkan itu.
sumber
git diff SHA1^ SHA1
dangit show SHA1
.git show
juga memperlihatkan pesan komitTampilkan log.
COMMIT bisa kosong ("") atau sha-1 atau sha-1 disingkat.
Ini hanya akan berisi daftar file, sangat berguna untuk diproses lebih lanjut.
sumber
Menemukan jawaban yang sempurna untuk ini:
Sehingga saya bisa tahu
sumber
Kombinasi "
git show --stat
" (terima kasih Ryan) dan beberapa perintah sed harus memangkas data untuk Anda:Itu hanya akan menghasilkan daftar file yang dimodifikasi.
sumber
Ada trik sederhana untuk dilihat sebagai daftar file, cukup tambahkan
:
setelah hash.Anda kemudian dapat menelusuri,
Jika Anda menekan file, Anda akan mendapatkan versi file mentah; yang kadang-kadang adalah apa yang Anda inginkan jika Anda hanya mencari referensi yang bagus atau bagian-bagian penting dari kode (diffs dapat membuat semuanya berantakan),
Satu-satunya kelemahan dari metode ini adalah tidak mudah menampilkan bagan file.
sumber
bekerja dengan baik untuk saya
sumber
Saya menggunakan ini untuk mendapatkan daftar file yang diubah dalam menggabungkan komit
atau
sumber
Jika Anda menggunakan plugin oh-my-zsh dan git, pintasan glg sangat membantu.
sumber
glg
output apa : lebih banyak. Maaf bila membingungkan.Hanya daftar file (bahkan tidak melakukan pesan):
Misalnya, buka semua file yang diubah di editor Anda:
sumber
Saya pikir saya akan berbagi ringkasan alias saya .. juga saya menemukan menggunakan 'zsh' hebat dengan git itu chroma kunci semuanya dengan baik dan memberitahu Anda ingin cabang ada di sepanjang waktu dengan mengubah command prompt.
Bagi mereka yang meliput dari SVN Anda akan menemukan ini berguna: (ini adalah kombinasi dari ide-ide dari utas yang berbeda, saya hanya mengambil kredit mengetahui cara menggunakan copy / paste)
sumber
Ini seharusnya bekerja:
Ini akan menunjukkan apa yang tidak dipentaskan dan apa yang dipentaskan.
sumber