Ich habe mir bereits die relevanten Dokumente von git-scm.com und gitref.org angesehen , aber ich kann das anscheinend nicht herausfinden.
Angenommen, ich möchte alle Commits für Dienstag, den 12. November 2013, erhalten. Am Beispiel eines vorhandenen Repos weiß ich, dass ich an diesem Tag Commits habe und am Tag zuvor und am Tag danach Commits.
Mit 2013-11-11
und2013-11-12
Alle folgenden geben mir Verpflichtungen für den 11. und 12. November:
git log --after="2013-11-11" --until="2013-11-12"
git log --since="2013-11-11" --until="2013-11-12"
git log --after="2013-11-11" --before="2013-11-12"
git log --since="2013-11-11" --before="2013-11-12"
Mit 2013-11-12
nur
Alle folgenden geben mir keine Verpflichtungen:
git log --since="2013-11-12" --until="2013-11-12"
git log --since="2013-11-12" --before="2013-11-12"
git log --after="2013-11-12" --until="2013-11-12"
git log --after="2013-11-12" --before="2013-11-12"
Mit 2013-11-12
und2013-11-13
Wie erwartet (aus den Ergebnissen von 2013-11-11
und 2013-11-12
oben) geben mir alle folgenden Ergebnisse sowohl vom 12. als auch vom 13. November:
git log --since="2013-11-12" --before="2013-11-13"
git log --after="2013-11-12" --before="2013-11-13"
git log --since="2013-11-12" --until="2013-11-13"
git log --after="2013-11-12" --before="2013-11-13"
...und so weiter und so fort. Ich fühle mich wie ich jede mögliche Kombination von versucht haben since
, after
, before
, und , until
aber immer noch keine Antwort finden kann, noch kann ich verstehen , ob diese Optionen sind inklusive oder exklusive, da sie umfassend zu sein scheinen , wenn die beiden Daten unterschiedlich sind, aber exklusiv, wenn sie am selben Tag sind. Habe ich etwas verpasst / was mache ich falsch?!
Antworten:
Danke John Bartholomew!
Die Antwort besteht darin, die Zeit anzugeben, z
git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"
quelle
git log --after="2013-11-12 00:00" --before="2013-11-13 00:00"
besser. Ich glaube,gitk --since="2013-11-12 00:00" --until="2013-11-13 00:00" &
würde auch funktionieren, wenn Sie gitk installiert haben.git log --after="2017-07-25" --before="2017-07-26"
gibt gültige Ergebnisse für mich.Normalerweise überprüfe ich mein Git-Protokoll und sehe, was ich an einem bestimmten Tag gearbeitet habe, und aktualisiere meine Arbeitszeittabelle darauf basierend, aber es ist eine Qual, das vollständige Datum im ISO-Format einzugeben, also mache ich es einfach so
und ich füge hinzu,
--author
um nur meine Commits zu druckenHiermit werden Commits gedruckt, die am letzten 9. Juni stattgefunden haben (in diesem Fall also für 2016 und nicht für 2015 oder 2014 usw.).
Die
--since/--after
und--until/--before
Parameter können auch Sachen nehmen wie3 days ago
,yesterday
etc.quelle
since
unduntil
Werte nicht korrekt sind, erhalten Sie keine Ausgabe, die sicher ist. Verwenden Siegit log
zuerst, und versuchen , ein wählensince
unduntil
Wert auf das, was Sie sehen. Keine Filiale oder etwas Besonderes erforderlich. Ich bin mir nicht sicher, seit welcher Git-Version diese Funktion verfügbar ist. Stellen Sie sicher, dass Sie auch eine aktuelle Version haben.git log --after="may 2" --before="may 3"
An der akzeptierten Antwort (die ich positiv bewertet habe) ist nichts auszusetzen, aber ... wir sind hier für die Wissenschaft!
Die folgende Ausgabe kann mit
pretty=format:<string>
Platzhaltern erweitert / angepasst werden :Nicht 100% immun gegen Fehler, da ein Benutzer dieselbe Zeichenfolge hätte eingeben können. Aber akzeptabel, je nachdem welche Platzhalter verwendet werden. Das obige Snippet würde zum Beispiel nicht fehlschlagen.
Man könnte auch analysieren , einfach das ganze
git log
aufJSON
und verbrauchen / manipulieren ihre Daten an das Herz Inhalt. Überprüfen Sie https://github.com/dreamyguy/gitlogg und schauen Sie niemals zurück!Haftungsausschluss: Das ist eines meiner Projekte.
quelle
Ich habe einen Git-Alias für diesen speziellen Zweck erstellt:
Verwendung:
quelle
git commitsAtDate yesterday
,2 days ago
usw.Dieses Skript zeigt den verfügbaren Datumsbereich der Commits für das aktuelle Repo an und fordert dann zur Eingabe des Datums auf, ab dem Commits angezeigt werden sollen. Es zeigt eine kurze SHA und die vollständige SHA, den Autor, den Festschreibungszeitstempel und die Kommentare in einfachen Anführungszeichen an.
Das Skript fordert so lange zur Eingabe von Daten auf, bis Sie die Eingabetaste oder Strg-D drücken.
Mac-Benutzer: Benötigt Gnu-Datum.
Ich habe das Skript aufgerufen
commitsOnDates
und hier ist es in Aktion. Das erste Datum, das ich eingebe, hat keine Commits, daher ist die Antwort nur eine leere Zeile:quelle