Git: vedi il mio ultimo commit


390

Voglio solo vedere i file che sono stati impegnati nell'ultimo commit esattamente come ho visto l'elenco quando l'ho fatto git commit. Sfortunatamente la ricerca

git "last commit" log

in Google non mi porta da nessuna parte. E

git diff HEAD^..HEAD

Non è quello di cui ho bisogno, ovviamente, poiché sputa anche il fegato.


35
Grazie, in realtà avevo solo bisogno git diff HEAD^..HEAD!
Ameen

Risposte:


376

Come determinato tramite commenti, sembra che l'OP stia cercando

$ git log --name-status HEAD^..HEAD

Questo è anche molto vicino all'output da cui otterresti svn statuso con svn log -vcui hanno familiarità molte persone che provengono da sovversione a git.

--name-statusè la chiave qui; come notato da altre persone in questa domanda, è possibile utilizzare git log -1, git showe git diffper ottenere lo stesso tipo di output. Personalmente, tendo ad usare git show <rev>quando guardo le singole revisioni.


Lo ammetto, i commenti non sono il modo migliore per rendere più chiara la mia domanda :) grazie MikeSep
Dan Rosenstark,

4
Penso che questo dia l'ultimo impegno, no? Quindi, per ultimo, lo fareigit log --stat --author nroose -n 1
annullando il

1
E può essere abbreviato e abbreviato con git show --name-status --oneline
jasonleonhard

È così ovvio! Avrei dovuto indovinare che è qualcosa di così semplice dal momento che questo è il tipo di query che accade continuamente.
Scott Biggs,

1
Nel caso in cui si utilizzi force push questo comando ti mostrerà l'ultima patch invece dell'ultimo commit (nel tempo) ... potrebbe essere complicato in alcuni casi d'uso
Olix

208

Usa git show :

git show --summary

Questo mostrerà i nomi dei file creati o rimossi, ma non i nomi dei file modificati . Il git showcomando supporta un'ampia varietà di formati di output che mostrano vari tipi di informazioni sui commit.


1
@jamessan git show --statè vicino, ma non c'è una vista in cui la parola 'modificato' o 'aggiunto' appare accanto al file?
Dan Rosenstark,

3
Se vuoi solo i nomi dei file (anche meno di --stat), puoi anche guardare --name-statuse --name-onlycambiare.
Mike Seplowitz,

1
@MikeSep, è proprio quello di cui avevo bisogno. Se la rendi una risposta, la segnerò come migliore risposta, poiché per me lo era. Sto usandogit log --name-status HEAD^..HEAD
Dan Rosenstark il

Questa è di gran lunga la soluzione più semplice di quelle offerte.
Matthew,


44

Per vedere l'ultimo commit

git log -1

Per vedere gli ultimi 2 commit

git log -2

eccetera....


1
Ma la domanda diceva "... voglio vedere i file che sono stati impegnati nell'ultimo commit" .
Peter Mortensen,

42

Di gran lunga il comando più semplice per questo è:

git show --name-only

Poiché elenca solo i file nell'ultimo commit e non ti dà il coraggio

Un esempio dell'output è:

commit  fkh889hiuhb069e44254b4925d2b580a602
Author: Kylo Ren <Kylo@darkside.empire.gov>
Date:   Sat May 4 16:50:32 2168 -0700

Changed shield frequencies to prevent Millennium Falcon landing

 www/controllers/landing_ba_controller.js             
 www/controllers/landing_b_controller.js            
 www/controllers/landing_bp_controller.js          
 www/controllers/landing_h_controller.js          
 www/controllers/landing_w_controller.js  
 www/htdocs/robots.txt                        
 www/htdocs/templates/shields_FAQ.html       

7
Considerare --name-statusinvece di --name-only.
Acumenus,

5
C'è il problema proprio lì ... l'impero sta usando php per la griglia di difesa!
ptim,

3
Il miglior esempio che ho visto su StackOverflow! "Questi non sono i commit che stai cercando."
Scott Biggs


21

Per vedere le ultime modifiche al commit

git show HEAD

O per vedere le ultime ultime modifiche al commit

git show HEAD~1

E per sostituire semplicemente '1' in precedenza con il numero di sequenza di commit richiesto.


15

Dopo aver eseguito diversi commit o clonato / pull un repository, potresti voler vedere quali commit sono stati effettuati. Controlla queste semplici soluzioni per visualizzare la cronologia dei tuoi commit (dall'ultimo / recente commit al primo).

Per l'ultimo commit, basta sparare questo comando: git log -1. Per cose più interessanti vedi sotto -

  1. Per visualizzare l'ID commit (checksum SHA-1), Nome autore <ID posta>, Data insieme all'ora e messaggio di commit -

    git log
    
  2. Per vedere altre statistiche, come i nomi di tutti i file modificati durante tale commit e il numero di inserzioni / eliminazioni. Questo è molto utile durante la revisione del codice -

    git log --stat
    
  3. Per visualizzare le cronologie di commit in alcuni formati piuttosto :) (Questo è seguito da alcune opzioni di pre-build) -

    • Se hai troppi commit da rivedere, questo comando li mostrerà in un'unica riga ordinata:

      git log --pretty=oneline
      
    • Per vedere brevi, medi, completi o anche più dettagli del tuo commit, usa rispettivamente il seguente -

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. Puoi anche usare il tuo formato di output usando l' formatopzione -

    git log --pretty=format:"%an, %ae - %s"
    

    dove% an - nome autore,% ae - email autore,% s - oggetto del commit, ecc.

Questo può aiutarti con le tue cronologie di commit. Per maggiori informazioni, clicca qui .


11
$ git diff - solo nome HEAD ^ .. HEAD

o

$ git log - solo nome HEAD ^ .. HEAD

Questo è quello che mi serve praticamente. Che ne dici di qualcosa che dice se è stato modificato, aggiunto o eliminato? Magari con una lettera, in stile svn?
Dan Rosenstark,

1
Ho capito adesso. git log --name-status HEAD^..HEAD
Dan Rosenstark,

2
Invece di git log ... HEAD^..HEAD, non è più semplice da usare git log ... -1 HEADo migliore git show ... HEAD?
Jakub Narębski,

Dopo aver sfogliato un paio di post StackOverflow, questa è la risposta di cui ho bisogno. Volevo solo i file e nient'altro. Nessun riepilogo del commit, solo i file dell'ultimo commit. GRAZIE!
luckytaxi,

6

git diff --stat HEAD

Questo mostra lo stesso diffstat del tuo ultimo commit.


4

Un altro modo per elencare solo i file è usare:
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
Oppure puoi usare due ID commit qualsiasi


vantaggi di questo a log?
Dan Rosenstark,

È fondamentalmente un modo diverso di elencare i file. Di solito lo combino con rsync per la distribuzione
Ismail Cherri,

0

Se stai parlando di trovare l'ultimo e il più grande commit dopo aver eseguito un checkout git di alcuni commit precedenti ( e hai dimenticato di scrivere l'hash di HEAD prima di eseguire il checkout ) la maggior parte di quanto sopra non ti riporterà dove hai iniziato tu. git log - [some #] mostra solo il log dalla posizione CORRENTE di HEAD , che non è necessariamente l'ultimo commit (stato del progetto). Checkout disconnetterà HEAD e lo indirizzerà a qualsiasi cosa tu abbia verificato.

È possibile visualizzare l'intero reflog di git , fino a raggiungere la voce che fa riferimento al clone originale. A proposito, anche questo non funzionerà se sono stati fatti degli commit tra il momento in cui hai clonato il progetto e quando hai eseguito un checkout. Altrimenti puoi sperare che tutti i tuoi commit sul tuo computer locale siano sul server, quindi clonare nuovamente l'intero progetto.

Spero che sia di aiuto.


Grazie, è un buon punto, ma la domanda originale era molto più semplice e aveva già risposto bene molte volte.
Dan Rosenstark,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.