Şu anda Git'te hangi taahhütlerin teslim alındığını bulun


158

Bir git bisectseansın ortasındayım .

Şu anda hangi taahhütte olduğumu (SHA1 karma) bulma komutu nedir? git statusbunu sağlamaz.

Düzenleme: Arama git logve ilk giriş eserlerine bakarak sanırım ?

Yanıtlar:


174

Bir git bisectoturum sırasında şu anda çalışma kopyasına teslim aldığınız taahhüdü görüntülemek için en az 5 farklı yolunuz vardır ( ikiye ayırmadığınızda 1-4 seçeneklerinin de işe yarayacağını unutmayın ):

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

Her seçeneği aşağıda ayrıntılı olarak açıklayacağım.

1.Seçenek: Git Show

Açıklandığı gibi bu cevap şu anda kontrol aşımı var (sadece sırasında taahhüt nasıl belirleneceği genel soruya git bisect), kullanabilirsiniz git showile -sbastırmak yama çıkışına seçeneği:

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

2.Seçenek: Git Log -1

Şu git log -1anda hangi taahhüdün bulunduğunu bulmak için de yapabilirsin .

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

Seçenek 3: Bash istemi

Git 1.8.3 ve sonraki sürümlerinde (veya daha önceki bir sürüm mü?) iki bölümlü oturum sırasında veya "müstakil HEAD" durumundayken. Aşağıdaki örnekte, şu anda kullanıma aldım c1abcde:

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

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

Seçenek 4: Git Durumu

Ayrıca Git 1.8.3+ sürümünden (ve muhtemelen daha önce, yine emin değilim), koşu git statussize bir bisect sırasında ve HEAD durumundayken hangi taahhüdü kontrol ettiğinizi gösterir:

$ git status
# HEAD detached at c1abcde <== RIGHT HERE

Seçenek 5: Git Bisect Visualize

Son olarak, bir işlem yaparken git bisect, başlatmak için basitçe git bisect visualizeveya yerleşik takma adını da git bisect viewkullanabilirsiniz gitk, böylece hangi taahhüdün bulunduğunuzu ve şimdiye kadar hangi taahhütleri kötü ve iyi olarak işaretlediğinizi grafik olarak görebilirsiniz. Bunun 1.8.3 sürümünden önce var olduğundan eminim, hangi sürümde tanıtıldığından emin değilim:

git bisect visualize 
git bisect view # shorter, means same thing

resim açıklamasını buraya girin


Temiz. Git 1.8'de olmadığım sorusunu sorduğumda ve o zamandan beri kendime taahhüt karmasını gösteren bir zsh sağ istemi aldım, bence özellikle ikiye katlandığım zaman için özel bir gösterge gösterebilir, ancak Bu soruyu sorduğumdan beri aslında daha fazla ikiye katlanmadı, çoğunlukla git log -p -S <search>iş yapıyor.
Steven Lu

git statusmüstakil durumda değilseniz taahhüt numarasını göstermez. aksi halde "Ne olursa olsun dalda" yazıyor . git showolsa çalışır
Kip

88

Sadece şunları yapabilirsiniz:

git rev-parse HEAD

Biraz daha açıklamak için: git rev-parsegit'in bir taahhüdün adını belirtebileceğiniz egzotik yollardan herhangi birini yorumlamak için temel komutudur ve HEADmevcut taahhüdünüze veya dalınıza bir referanstır. (Bir git bisectoturumda, bir dal yerine doğrudan bir taahhüdü ("ayrılmış HEAD") gösterir.)

Alternatif olarak (ve hatırlanması daha kolay) sadece şunları yapmak olacaktır:

git show

... bu da varsayılan olarak gösterilen taahhüdü göstermektir HEAD. Daha kısa bir versiyon için şunları yapabilirsiniz:

$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation

3
Sadece başka bir yerde kullanmak için karma almak istiyorsanız, git rev-parse HEADtüm çöp alternatifleri vs işleme gerektirmez.
Nick T

17
$ git rev-parse HEAD
273cf91b4057366a560b9ddcee8fe58d4c21e6cb

Güncelleme:

Alternatif olarak (etiketleriniz varsa):

(Bir sürümü adlandırmak için iyi, git'e geri dönmek için çok iyi değil.)

$ git tanımla
v0.1.49-localhost-ag-1-g273cf91

Veya (Mark'ın önerdiği gibi, tamlık için burada listelenir):

$ git show --oneline -s
c0235b7 Yüklenen görüntüleri EXIF ​​yönüne göre otomatik döndür

7
Hatırlanması kolay bir şey için değil, bir SHA1 istediniz. ;-)
Alexander Gladysh

Bir senaryoda biraz kontrol yapmak istiyorsanız bu sürüm çok kullanışlıdır
Daniele Licitra

13

Eğer bilginin sadece basit bir parça çıkarmak istiyorsanız, kullandığınız olduğunu alabilirsiniz git showile --format=<string>seçeneği ... ve sana olan diff vermemeye sormak --no-patch. Bu, genellikle tek bir alan olabilen her şeyin printf tarzı çıktısını alabileceğiniz anlamına gelir.

Örneğin, sadece kısaltılmış karmayı ( %h) almak için şunu söyleyebilirsiniz:

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

Bunu bash'de bir ortam değişkenine (insanların yapmak isteyebileceği bir şey) kaydetmek istiyorsanız $()sözdizimini kullanabilirsiniz :

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

$ echo $GIT_COMMIT
4b703eb

Yapabileceklerinizingit show --help tam listesi burada . Ancak, yararlı olabilecek özelliklerin kısaltılmış bir listesi:

  • %H karma yapmak
  • %h kısaltılmış sağlama karması
  • %T ağaç hash
  • %t kısaltılmış ağaç karması
  • %P ebeveyn karmaları
  • %p kısaltılmış ana karmalar
  • %an yazar adı
  • %ae yazar e-postası
  • %at yazar tarihi, UNIX zaman damgası
  • %aI yazar tarihi, katı ISO 8601 formatı
  • %cn komünist adı
  • %ce committer email
  • %ct başlangıç ​​tarihi, UNIX zaman damgası
  • %cI değiştirme tarihi, katı ISO 8601 formatı
  • %s konu
  • %f sterilize edilmiş konu satırı, dosya adına uygun
  • %gD reflog seçici, ör. refs / stash @ {1}
  • %gd kısaltılmış reflog seçici, ör. stash @ {1}

Tüm bu biçimlendirme seçenekleri, ancak dalshow için hiçbir şey yok .
bvj

2

Kullanım git showhiçbir argüman verildiğinde mesajı işlemek de gösterileri, ve akıma varsayılan işlemek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.