Saya memiliki komit c. Saya ingin mendapatkan changeset dari commit yang tepat c + metainformation dan tidak ada yang lain. Apakah ada cara yang lebih sederhana daripada git log -p c^..c
melakukannya?
Jawaban Michal Trybus adalah yang terbaik untuk kesederhanaan. Tetapi jika Anda tidak ingin perbedaan dalam output Anda, Anda selalu dapat melakukan sesuatu seperti:
git log -1 -U c
Itu akan memberi Anda log komit, dan kemudian Anda akan memiliki kontrol penuh atas semua opsi git logging untuk keperluan otomatisasi Anda. Dalam contoh Anda, Anda mengatakan ingin perubahan-set. Cara yang paling mudah dibaca manusia untuk mencapai itu adalah:
git log --name-status --diff-filter="[A|C|D|M|R|T]" -1 -U c
Atau, jika Anda menggunakan versi git lebih besar dari 1.8.X itu akan menjadi:
git log --name-status --diff-filter="ACDMRT" -1 -U c
Ini akan memberi Anda hasil yang mirip dengan:
commit {c}
Author: zedoo <[email protected]>
Date: Thu Aug 2 {time-stamp}
{short description}
D zedoo/foo.py
A zedoo/bar.py
Tentu saja Anda dapat memfilter acara mana saja yang Anda inginkan, dan memformat pengembalian sesuai keinginan melalui perintah git-log tradisional yang didokumentasikan dengan baik di sini .
git show --name-only <sha1>
!git show -s <commit>
.-1
harus dilakukan Di mana itu didokumentasikan?git help log
bawah bagian "Pembatasan Komit". Atau lihat git-scm.com/book/en/v2/…-<number>
membatasi jumlah commit ke output.git log -p c -1
tidak hanya itu.sumber
-n 1
atau--max-number=1
dan didokumentasikan di sini .Anda dapat menggunakan untuk memfilter perubahan dengan deskripsi komit:
di mana
git log --grep='part_of_description'
pilih komit yang berisi 'part_of_description' dan-p
tampilkan perubahan setiap komitsumber