Git: Siehe mein letztes Commit


389

Ich möchte nur die Dateien sehen, die beim letzten Festschreiben genau so festgeschrieben wurden, wie ich die Liste damals gesehen habe git commit. Leider auf der Suche nach

git "last commit" log

in Google bringt mich nirgendwo hin. Und

git diff HEAD^..HEAD

ist natürlich nicht das, was ich brauche, da es auch den Mut der Veränderung spuckt.


35
Danke, ich brauchte eigentlich nur git diff HEAD^..HEAD!
Ameen

Antworten:


376

Wie über Kommentare festgestellt, scheint das OP zu suchen

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

Dies ist auch sehr nahe an der Ausgabe, die Sie von svn statusoder erhalten würden svn log -v, mit der viele Leute, die von Subversion zu Git kommen, vertraut sind.

--name-statusist der Schlüssel hier; wie andere Leute in dieser Frage erwähnt, können Sie verwenden git log -1, git showund git diffdie gleiche Art von Ausgabe zu erhalten. Persönlich neige ich dazu, git show <rev>einzelne Revisionen zu betrachten.


Ich gebe zu, Kommentare sind nicht der beste Weg für mich, meine Frage sauberer zu machen :) Danke MikeSep
Dan Rosenstark

4
Ich denke, das gibt DAS letzte Commit, nein? Also, für MEIN letztes würde ich tungit log --stat --author nroose -n 1
nroose

1
Und kann mit git show --name-status --oneline
jasonleonhard

Das ist so offensichtlich! Ich hätte vermuten sollen, dass es etwas so Einfaches ist, da dies die Art von Abfrage ist, die die ganze Zeit passiert.
Scott Biggs

1
Im Fall von Force Push zeigt Ihnen dieser Befehl den letzten Patch anstelle des letzten (zeitlichen) Commits ... kann in einigen Anwendungsfällen schwierig sein
Olix

207

Verwenden Sie git show :

git show --summary

Hier werden die Namen der erstellten oder entfernten Dateien angezeigt, nicht jedoch die Namen der geänderten Dateien. Der git showBefehl unterstützt eine Vielzahl von Ausgabeformaten, die verschiedene Arten von Informationen zu Commits anzeigen.


1
@jamessan git show --statist in der Nähe, aber gibt es keine Ansicht, in der das Wort "geändert" oder "hinzugefügt" neben der Datei angezeigt wird?
Dan Rosenstark

3
Wenn Sie nur die Namen der Dateien (noch weniger als --stat) möchten, möchten Sie möglicherweise auch die Dateien anzeigen --name-statusund --name-onlywechseln.
Mike Seplowitz

1
@ MikeSep, das habe ich eigentlich gebraucht. Wenn Sie es zu einer Antwort machen, werde ich es als beste Antwort markieren, da es für mich war. Ich benutzegit log --name-status HEAD^..HEAD
Dan Rosenstark

Dies ist bei weitem die einfachste Lösung der angebotenen.
Matthew


44

Um das letzte Commit zu sehen

git log -1

Um die letzten 2 Commits zu sehen

git log -2

usw....


1
Aber die Frage lautete "... möchte die Dateien sehen , die beim letzten Festschreiben festgeschrieben wurden" .
Peter Mortensen

42

Der mit Abstand einfachste Befehl hierfür ist:

git show --name-only

Da es nur die Dateien im letzten Commit auflistet und Ihnen nicht den ganzen Mut gibt

Ein Beispiel für die Ausgabe ist:

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
Betrachten Sie --name-statusstatt --name-only.
Acumenus

5
Genau dort gibt es das Problem. Das Imperium verwendet PHP für das Verteidigungsgitter!
ptim

3
Bestes Beispiel, das ich bei Stackoverflow gesehen habe! "Das sind nicht die Verpflichtungen, die Sie suchen."
Scott Biggs

22
git log -1 --name-status

Macht die Arbeit für mich.


21

Anzeigen der letzten Festschreibungsänderungen

git show HEAD

Oder um vorletzte Commit-Änderungen zu sehen

git show HEAD~1

Und für weitere ersetzen Sie einfach '1' oben durch die erforderliche Commit-Sequenznummer.


15

Nachdem Sie mehrere Commits ausgeführt oder ein Repository geklont / abgerufen haben, möchten Sie möglicherweise sehen, welche Commits vorgenommen wurden. Überprüfen Sie einfach diese einfachen Lösungen, um Ihren Commit-Verlauf anzuzeigen (vom letzten / letzten Commit bis zum ersten).

Feuern Sie für das letzte Commit einfach diesen Befehl ab : git log -1. Für weitere interessante Dinge siehe unten -

  1. So zeigen Sie die Festschreibungs-ID (SHA-1-Prüfsumme), den Autorennamen <Mail-ID>, das Datum und die Uhrzeit sowie die Festschreibungsnachricht an:

    git log
    
  2. Um weitere Statistiken anzuzeigen, z. B. die Namen aller Dateien, die während dieses Commits geändert wurden, und die Anzahl der Einfügungen / Löschungen. Dies ist sehr praktisch beim Überprüfen des Codes -

    git log --stat
    
  3. Festschreibungsverläufe in einigen hübschen Formaten anzeigen :) (Darauf folgen einige vorgefertigte Optionen) -

    • Wenn Sie zu viele Commits zum Überprüfen haben, werden sie mit diesem Befehl in einer ordentlichen Zeile angezeigt:

      git log --pretty=oneline
      
    • Verwenden Sie Folgendes, um kurze, mittlere, vollständige oder noch mehr Details Ihres Commits anzuzeigen:

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. Mit der formatOption - können Sie sogar Ihr eigenes Ausgabeformat verwenden -

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

    wobei% an - Autorenname,% ae - Autor E-Mail,% s - Betreff des Commits usw.

Dies kann Ihnen bei Ihren Commit-Historien helfen. Weitere Informationen finden Sie hier .


11
$ git diff - nur Name HEAD ^ .. HEAD

oder

$ git log - nur name HEAD ^ .. HEAD

Das brauche ich so ziemlich. Wie wäre es mit etwas, das sagt, ob es geändert, hinzugefügt oder gelöscht wurde? Vielleicht mit einem Brief im SVN-Stil?
Dan Rosenstark

1
Ich habe es verstanden. git log --name-status HEAD^..HEAD
Dan Rosenstark

2
Ist git log ... HEAD^..HEADes nicht einfacher git log ... -1 HEADoder besser git show ... HEAD?
Jakub Narębski

Nach dem Durchsuchen einiger Stackoverflow-Beiträge ist dies die Antwort, die ich brauche. Ich wollte nur die Dateien und sonst nichts. Keine Commit-Zusammenfassung, nur die Dateien aus dem letzten Commit. VIELEN DANK!
Luckytaxi

6

git diff --stat HEAD

Dies zeigt den gleichen Diffstat wie Ihr letztes Commit.


4

Eine andere Möglichkeit, nur die Dateien aufzulisten, besteht darin
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
, Folgendes zu verwenden: Sie können auch zwei beliebige Festschreibungs-IDs verwenden


Vorteile davon zu log?
Dan Rosenstark

Es ist im Grunde eine andere Art, die Dateien aufzulisten. Normalerweise kombiniere ich dies mit rsync für die Bereitstellung
Ismail Cherri

0

Wenn Sie über das Finden des neuesten und besten Commits sprechen, nachdem Sie ein Git-Checkout eines früheren Commits durchgeführt haben ( und vergessen haben, den HEAD-Hash vor dem Ausführen des Checkouts aufzuschreiben ), werden Sie mit den meisten der oben genannten Punkte nicht dorthin zurückkehren du hast angefangen. git log - [some #] zeigt nur das Protokoll von der CURRENT-Position von HEAD an , was nicht unbedingt das allerletzte Commit (Status des Projekts) ist. Durch das Auschecken wird der KOPF getrennt und auf das gezeigt, was Sie ausgecheckt haben.

Sie können das gesamte Git-Reflog anzeigen , bis Sie den Eintrag erreichen, der auf den ursprünglichen Klon verweist. Übrigens funktioniert dies auch nicht, wenn zwischen dem Zeitpunkt, zu dem Sie das Projekt geklont haben, und dem Zeitpunkt, zu dem Sie einen Checkout durchgeführt haben, Commits vorgenommen wurden. Andernfalls können Sie hoffen, dass sich alle Ihre Commits auf Ihrem lokalen Computer auf dem Server befinden, und dann das gesamte Projekt erneut klonen.

Hoffe das hilft.


Danke, es ist ein guter Punkt, aber die ursprüngliche Frage war viel einfacher und wurde schon oft gut beantwortet.
Dan Rosenstark
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.