Risposte:
Hai almeno 5 modi diversi per visualizzare il commit che hai attualmente estratto nella tua copia di lavoro durante una git bisectsessione ( nota che le opzioni 1-4 funzioneranno anche quando non esegui una bisect ):
git show.git log -1.git status.git bisect visualize.Spiegherò ogni opzione in dettaglio di seguito.
Come spiegato in questa risposta alla domanda generale su come determinare quale commit è stato estratto (non solo durante git bisect), è possibile utilizzare git showcon l' -sopzione per eliminare l'output della patch:
$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
Puoi anche semplicemente fare git log -1per scoprire a quale impegno sei attualmente impegnato.
$ git log -1 --oneline
c1abcde Add feature-003
Nella versione 1.8.3+ di Git (o era una versione precedente?), Se hai il prompt di Bash configurato per mostrare il ramo corrente che hai estratto nella tua copia di lavoro, ti mostrerà anche il commit corrente che hai controllato durante una sessione bisect o quando sei in uno stato "HEAD distaccato". Nell'esempio seguente, attualmente ho c1abcdeverificato:
# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $
# Prompt at detached HEAD state
user ~ (c1abcde...) $
Anche a partire dalla versione 1.8.3+ di Git (e possibilmente in precedenza, di nuovo non sono sicuro), l'esecuzione git statusti mostrerà anche quale commit hai eseguito il check-in durante un bisect e quando sei in stato HEAD distaccato:
$ git status
# HEAD detached at c1abcde <== RIGHT HERE
Infine, mentre stai eseguendo un git bisect, puoi anche semplicemente usare git bisect visualizeo il suo alias integrato git bisect viewper avviare gitk, in modo da poter visualizzare graficamente su quale commit ti stai impegnando, e quali commit hai contrassegnato come cattivo e buono finora. Sono abbastanza sicuro che esistesse ben prima della versione 1.8.3, non sono sicuro di quale versione fosse stata introdotta:
git bisect visualize
git bisect view # shorter, means same thing

git statusnon ti mostra l'id di commit a meno che tu non sia in stato distaccato altrimenti dice "Sul ramo qualunque ". git showfunziona però
Puoi semplicemente fare:
git rev-parse HEAD
Per spiegare un po 'di più: git rev-parseè il comando di base di git per interpretare uno dei modi esotici in cui è possibile specificare il nome di un commit ed HEADè un riferimento al proprio commit o ramo corrente. (In una git bisectsessione, punta direttamente a un commit ("HEAD distaccato") anziché a un ramo.)
In alternativa (e più facile da ricordare) sarebbe semplicemente fare:
git show
... che per impostazione predefinita mostra il commit a cui HEADpunta. Per una versione più concisa, puoi fare:
$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation
git rev-parse HEADnon richiede elaborazione rispetto a tutte le alternative di immondizia.
$ git rev-parse HEAD 273cf91b4057366a560b9ddcee8fe58d4c21e6cb
Aggiornare:
In alternativa (se hai tag):
(Buono per nominare una versione, non molto buono per tornare a git.)
$ git descrivono v0.1.49-localhost-ag-1-g273cf91
Oppure (come suggerito Mark, elencando qui per completezza):
$ git show --oneline -s c0235b7 Autorota le immagini caricate in base all'orientamento EXIF
Se vuoi estrarre solo una semplice informazione, puoi ottenerla usando git showl' --format=<string>opzione ... e chiederle di non darti il diff --no-patch. Ciò significa che puoi ottenere un output in stile printf di qualsiasi cosa tu voglia, che potrebbe essere spesso un singolo campo.
Ad esempio, per ottenere solo l'hash abbreviato ( %h) potresti dire:
$ git show --format="%h" --no-patch
4b703eb
Se stai cercando di salvarlo in una variabile d'ambiente in bash (una cosa probabile che le persone vogliano fare) puoi usare la $()sintassi :
$ GIT_COMMIT="$(git show --format="%h" --no-patch)"
$ echo $GIT_COMMIT
4b703eb
L' elencogit show --help completo di ciò che puoi fare è in . Ma ecco un elenco abbreviato di proprietà che potrebbero essere utili:
%H commettere hash%h hash di commit abbreviato%T hash dell'albero%t hash abbreviato dell'albero%P hash dei genitori%p hash parent abbreviati%an nome dell'autore%ae email dell'autore%at data dell'autore, data / ora UNIX%aI data dell'autore, rigoroso formato ISO 8601%cn nome del committer%ce email committer%ct data del committer, data / ora UNIX%cI data di consegna, formato ISO 8601 rigoroso%s soggetto%f riga dell'oggetto disinfettata, adatta per un nome file%gD selettore reflog, ad es. refs / stash @ {1}%gd selettore reflog abbreviato, ad es. stash @ {1}shownon ha nulla per il ramo .
git log -p -S <search>lo più fa il lavoro.