log git dari satu revisi

181

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^..cmelakukannya?

zedoo
sumber

Jawaban:

269

Anda bisa menggunakan show:

git show commit_id
Michał Trybus
sumber
60

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 .

SuperFamousGuy
sumber
14
Jika Anda tidak ingin diff, lakukan git show --name-only <sha1>!
dbn
16
Jika Anda hanya tidak ingin diff, gunakan git show -s <commit>.
moeffju
3
Apa yang -1harus dilakukan Di mana itu didokumentasikan?
alex
1
@alex Lihat output di git help logbawah bagian "Pembatasan Komit". Atau lihat git-scm.com/book/en/v2/… -<number> membatasi jumlah commit ke output.
LarsH
14

git log -p c -1 tidak hanya itu.

Robert Munteanu
sumber
4
Apa yang saya lakukan -1? Di mana itu didokumentasikan?
alex
4
@alex: "-1" membatasi jumlah entri yang ditampilkan ke nomor yang diberikan, ini kependekan dari -n 1atau --max-number=1dan didokumentasikan di sini .
derpasaurus
0

Anda dapat menggunakan untuk memfilter perubahan dengan deskripsi komit:

git log --grep='part_of_description' -p

di mana git log --grep='part_of_description'pilih komit yang berisi 'part_of_description' dan -ptampilkan perubahan setiap komit

natigon
sumber