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?

Jawaban:



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 <zedoo@stackoverflow.com>
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 .


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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.