Temukan komit yang saat ini dicentang di Git

157

Saya sedang di tengah git bisectsesi.

Apa perintah untuk mengetahui komit (hash SHA1) yang saya pakai saat ini? git statustidak menyediakan ini.

Sunting: Saya kira menelepon git logdan melihat karya entri pertama?

Steven Lu
sumber

Jawaban:

173

Anda memiliki setidaknya 5 cara berbeda untuk melihat komit yang saat ini Anda periksa ke copy pekerjaan Anda selama git bisectsesi ( perhatikan bahwa opsi 1-4 juga akan berfungsi ketika Anda tidak melakukan pembagian dua ):

  1. git show.
  2. git log -1.
  3. Bash prompt.
  4. git status.
  5. git bisect visualize.

Saya akan menjelaskan setiap opsi secara terperinci di bawah ini.

Opsi 1: git show

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 showdengan -spilihan untuk Patch keluaran menekan:

$ git show --oneline -s
a9874fd Merge branch 'epic-feature'

Opsi 2: git log -1

Anda juga bisa melakukannya git log -1untuk mengetahui komit yang sedang Anda ikuti.

$ git log -1 --oneline
c1abcde Add feature-003

Opsi 3: Bash prompt

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 c1abcdememeriksa:

# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $

# Prompt at detached HEAD state 
user ~ (c1abcde...) $

Opsi 4: status git

Juga pada Git versi 1.8.3+ (dan mungkin sebelumnya, sekali lagi tidak yakin), menjalankan git statusjuga 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

Opsi 5: git bisect memvisualisasikan

Terakhir, saat Anda melakukan a git bisect, Anda juga dapat menggunakan git bisect visualizeatau alias bawaannya git bisect viewuntuk 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

masukkan deskripsi gambar di sini

Komunitas
sumber
Rapi. Ketika saya mengajukan pertanyaan saya tidak berada di Git 1.8, dan sejak itu saya mendapatkan prompt kanan zsh yang menunjukkan hash komit, saya pikir itu mungkin bahkan menunjukkan indikator khusus khusus untuk jika saya membagi dua, tapi saya belum Sebenarnya saya tidak melakukan pembelahan lagi sejak saya mengajukan pertanyaan ini, kebanyakan git log -p -S <search>melakukan pekerjaan itu.
Steven Lu
git statustidak menampilkan id komit kecuali Anda dalam keadaan terpisah. kalau tidak tertulis "Di cabang apa pun ". git showberfungsi
Kip
88

Anda bisa melakukannya:

git rev-parse HEAD

Untuk menjelaskan sedikit lebih jauh: git rev-parseadalah perintah dasar git untuk menafsirkan salah satu cara eksotis yang dapat Anda tentukan nama komit dan HEADmerupakan referensi untuk komit atau cabang Anda saat ini. (Dalam sebuah git bisectsesi, itu menunjuk langsung ke sebuah komit ("KEPALA terlepas") daripada cabang.)

Atau (dan lebih mudah diingat) adalah dengan hanya melakukan:

git show

... yang secara default menunjukkan komit yang HEADmenunjuk ke. Untuk versi yang lebih ringkas, Anda dapat melakukan:

$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation
Mark Longair
sumber
3
Jika Anda hanya ingin mendapatkan hash untuk digunakan di tempat lain, git rev-parse HEADtidak memerlukan pemrosesan vs semua alternatif sampah.
Nick T
17
KEPALA $ git rev-parse
273cf91b4057366a560b9ddcee8fe58d4c21e6cb

Memperbarui:

Atau (jika Anda memiliki tag):

(Bagus untuk memberi nama versi, tidak terlalu bagus untuk meneruskan kembali ke git.)

$ git jelaskan
v0.1.49-localhost-ag-1-g273cf91

Atau (seperti yang disarankan Markus, daftar di sini untuk kelengkapan):

$ git show --oneline -s
c0235b7 Autorotate mengunggah gambar berdasarkan orientasi EXIF
Alexander Gladysh
sumber
7
Anda meminta SHA1, bukan untuk sesuatu yang mudah diingat. ;-)
Alexander Gladysh
Versi ini sangat berguna jika Anda ingin melakukan beberapa pemeriksaan naskah
Daniele Licitra
13

Jika Anda ingin mengekstraksi hanya sepotong informasi sederhana, Anda bisa menggunakannya git showdengan --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:

$ git show --format="%h" --no-patch
4b703eb

Jika Anda ingin menyimpannya ke variabel lingkungan di bash (kemungkinan yang ingin dilakukan orang), Anda dapat menggunakan $()sintaks :

$ GIT_COMMIT="$(git show --format="%h" --no-patch)"

$ echo $GIT_COMMIT
4b703eb

Daftar lengkap yang dapat Anda lakukan ada digit 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}
HostileFork mengatakan jangan percaya pada SE
sumber
Semua opsi pemformatan itu, tetapi showtidak memiliki apa pun untuk cabang .
bvj
2

Gunakan git show, yang juga menunjukkan Anda pesan komit, dan default ke komit saat ini ketika tidak ada argumen.

penilai
sumber