Saya sedang di tengah git bisect
sesi.
Apa perintah untuk mengetahui komit (hash SHA1) yang saya pakai saat ini? git status
tidak menyediakan ini.
Sunting: Saya kira menelepon git log
dan melihat karya entri pertama?
Anda memiliki setidaknya 5 cara berbeda untuk melihat komit yang saat ini Anda periksa ke copy pekerjaan Anda selama git bisect
sesi ( perhatikan bahwa opsi 1-4 juga akan berfungsi ketika Anda tidak melakukan pembagian dua ):
git show
.git log -1
.git status
.git bisect visualize
.Saya akan menjelaskan setiap opsi secara terperinci di bawah ini.
Sebagaimana dijelaskan dalam jawaban ini untuk pertanyaan umum tentang bagaimana untuk menentukan komit saat ini Anda telah memeriksa-out (tidak hanya pada saat git bisect
), Anda dapat menggunakan git show
dengan -s
pilihan untuk Patch keluaran menekan:
$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
Anda juga bisa melakukannya git log -1
untuk mengetahui komit yang sedang Anda ikuti.
$ git log -1 --oneline
c1abcde Add feature-003
Di Git versi 1.8.3+ (atau apakah ini versi yang lebih lama?), Jika Anda memiliki Bash prompt Anda yang dikonfigurasi untuk memperlihatkan cabang saat ini Anda telah memeriksa ke dalam copy pekerjaan Anda, maka itu juga akan menunjukkan kepada Anda komit saat ini yang telah Anda periksa keluar selama sesi dua bagian atau ketika Anda berada dalam kondisi "KEPALA terpisah". Dalam contoh di bawah ini, saya saat ini telah c1abcde
memeriksa:
# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $
# Prompt at detached HEAD state
user ~ (c1abcde...) $
Juga pada Git versi 1.8.3+ (dan mungkin sebelumnya, sekali lagi tidak yakin), menjalankan git status
juga akan menunjukkan kepada Anda komit apa yang telah Anda periksa selama dua bagian dan ketika Anda berada dalam status HEAD yang terpisah:
$ git status
# HEAD detached at c1abcde <== RIGHT HERE
Terakhir, saat Anda melakukan a git bisect
, Anda juga dapat menggunakan git bisect visualize
atau alias bawaannya git bisect view
untuk diluncurkan gitk
, sehingga Anda dapat melihat secara grafis komit yang Anda aktifkan , serta komit yang telah Anda tandai sebagai buruk dan baik sejauh ini. Saya cukup yakin ini ada sebelum versi 1.8.3, saya tidak yakin versi mana yang diperkenalkan:
git bisect visualize
git bisect view # shorter, means same thing
git log -p -S <search>
melakukan pekerjaan itu.git status
tidak menampilkan id komit kecuali Anda dalam keadaan terpisah. kalau tidak tertulis "Di cabang apa pun ".git show
berfungsiAnda bisa melakukannya:
Untuk menjelaskan sedikit lebih jauh:
git rev-parse
adalah perintah dasar git untuk menafsirkan salah satu cara eksotis yang dapat Anda tentukan nama komit danHEAD
merupakan referensi untuk komit atau cabang Anda saat ini. (Dalam sebuahgit bisect
sesi, itu menunjuk langsung ke sebuah komit ("KEPALA terlepas") daripada cabang.)Atau (dan lebih mudah diingat) adalah dengan hanya melakukan:
... yang secara default menunjukkan komit yang
HEAD
menunjuk ke. Untuk versi yang lebih ringkas, Anda dapat melakukan:sumber
git rev-parse HEAD
tidak memerlukan pemrosesan vs semua alternatif sampah.Memperbarui:
Atau (jika Anda memiliki tag):
(Bagus untuk memberi nama versi, tidak terlalu bagus untuk meneruskan kembali ke git.)
Atau (seperti yang disarankan Markus, daftar di sini untuk kelengkapan):
sumber
Jika Anda ingin mengekstraksi hanya sepotong informasi sederhana, Anda bisa menggunakannya
git show
dengan--format=<string>
opsi ... dan memintanya untuk tidak memberi Anda perbedaan--no-patch
. Ini berarti Anda bisa mendapatkan keluaran gaya printf dari apa pun yang Anda inginkan, yang mungkin sering berupa bidang tunggal.Misalnya, untuk mendapatkan hash yang disingkat (
%h
) Anda bisa mengatakan:Jika Anda ingin menyimpannya ke variabel lingkungan di bash (kemungkinan yang ingin dilakukan orang), Anda dapat menggunakan
$()
sintaks :Daftar lengkap yang dapat Anda lakukan ada di
git show --help
. Tapi di sini daftar properti yang disingkat yang mungkin berguna:%H
melakukan hash%h
disingkat melakukan hash%T
hash pohon%t
hash pohon disingkat%P
hash induk%p
hash induk disingkat%an
nama penulis%ae
email penulis%at
tanggal penulis, cap waktu UNIX%aI
tanggal penulis, format ISO 8601 yang ketat%cn
nama pengendara%ce
email komuter%ct
tanggal committer, cap waktu UNIX%cI
tanggal committer, format ISO 8601 yang ketat%s
subyek%f
baris subjek yang disanitasi, cocok untuk nama file%gD
pemilih reflog, misalnya, ref / simpanan @ {1}%gd
pemilih reflog yang dipersingkat, misalnya, simpanan @ {1}sumber
show
tidak memiliki apa pun untuk cabang .Gunakan
git show
, yang juga menunjukkan Anda pesan komit, dan default ke komit saat ini ketika tidak ada argumen.sumber