Ich muss das Datum des Commits von git überschreiben, alle Dokumentationen verweisen auf den Parameter --date, lassen dann aber einen ohne Hinweis auf das entsprechende Format. Ich habe jede erdenkliche Permutation ausprobiert und erhalte den Fehler "fatal: ungültiges Datumsformat:" für jede einzelne.
git
command-line-arguments
v010dya
quelle
quelle
Antworten:
Git 2.6+ (Q3 2015) fügt eine neue Option hinzu.
Siehe Commit e4f031e (30. Juni 2015) und Commit aa1462c , Commit a5481a6 , Commit b7c1e11 (25. Juni 2015) von Jeff King (
peff
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit d939af1 , 3. August 2015)Davide Cavestro schlägt in den Kommentaren das Beispiel vor:
Ursprüngliche Antwort (Mitte 2014)
Die
--date
Option (eingeführt in Commit 02b47cd im Dezember 2009 für git1.7.0) verwendet dasselbe Format wie fürGIT_AUTHOR_DATE
, wobei Datumsformate in Commit 96b2d4f getestet wurden :Dort sehen Sie die verschiedenen akzeptierten Formate:
Mon, 3 Jul 2006 17:18:43 +0200
2006-07-03 17:18:43 +0200
Mon Jul 3 15:18:43 2006
2006-07-03
(nicht in 1.9.1, funktioniert in 2.3.0)relativ: siehe Commit 34dc6e7 :
raw: siehe Commit 7dff9b3 (Git 1.6.2, März 2009)
internes Raw-Git-Format - Sekunden seit Epoche plus Zeitzone
( anders ausgedrückt: '
date +"%s %z"
' Format)Mon Jul 3 17:18:43 2006 +0200
ADTC fragt und antwortet in den Kommentaren :
quelle
2006-07-03 15:18:43
für lokale ? Was sind relative und rohe Formate?Das Datumsformat ist unter Documentation / date-formats.txt (
man git commit
) unterdokumentiert und sehr "humanisch" analysiert.Das einzige, was funktioniert, ist, die Quelle unter date.c zu lesen und auszuprobieren .
Von VonC am 2.3.0 nicht erwähnte Punkte:
Nur Ziffern werden abhängig von der Anzahl der Ziffern analysiert:
2 Ziffern: 19JJ, für JJ> = 73, aktueller Monat, Tag und Uhrzeit. Fehler oder aktuelles Datum sonst.
4 Ziffern: JJJJ, für JJJJ> = 1973, <= 2099
> 8 Stellen bis zu einer kleinen Grenze (TODO welche?): UNIX-Zeit (Sekunden seit 1970)
@<digits> +0000
: UNIX-Zeit.Dies scheint der beste Weg zu sein, um UNIX-Zeiten direkt einzugeben.
2 ** 64 - 2 (TODO warum nicht -1?) War der Maximalwert, der nicht zu einem Festschreibungsfehler führt. Der Stempel ist in einem C lang gespeichert.
git log
zeigt sehr große Werte (irgendwo in der2^55
Nähe von TODO wo?) als 1970, obwohlgit cat-file -p HEAD
zeigt, dass die richtige Nummer gespeichert wurde, so dass es wie eine Einschränkung der Datumskonvertierung erscheint.Für alles
2**63 - 1
, was größer ist als das größte positive, das lange signiert ist, schlägt der Versuch, auf GitHub zu pushen, fehldate causes integer overflow
. Ein Commit zu diesem Datum auf GitHub (GitHub kann aus irgendeinem Grund keine wirklich großen Daten anzeigen )VonC wies darauf hin, dass dies eine Schande ist, da es negative Daten blockiert. Ist es möglich, ein Git-Commit festzulegen , um einen Zeitstempel vor 1970 zu haben? Dies könnte verwendet werden, um ältere Software auf Git zu migrieren.
tea
: heute um 17h :-)quelle
Einfaches Beispiel:
quelle
Die folgenden abgekürzten Formen würden alle funktionieren:
<month>/<day>
<month>-<day>
<day>.<month>
Wenn es keine Mehrdeutigkeit gibt, nämlich
<day>
größer als12
, spielt die Reihenfolge<month>
<day>
keine Rolle, und das Trennzeichen kann eines von '/
', '-
' oder '.
' sein.Verwenden Sie andernfalls '
.
' als Trennzeichen für<day>.<month>
und '/
' oder '-
' für<month>-<day>
."
1.7
" Würde also als "1. Juli" behandelt und "1/7
" als "7. Januar".Siehe das zugehörige Commit aus Version 1.3.0 :
Dies gilt auch für andere Befehle, die eine Datumseingabe akzeptieren, z. B.: Protokoll seit dem 4. Februar anzeigen:
quelle