git inspiziert die Zeit, zu der das Commit durchgeführt wurde [duplizieren]

8

Wie kann ich feststellen, welche Version zu einem bestimmten Zeitpunkt in einem Git-Repository vorhanden war?

Angenommen, ich habe ein gemeinsames Repository, in das mehrere Benutzer Änderungen übernehmen können, und ich möchte einen Snapshot um 12:00 Uhr an einem bestimmten Tag in der Vergangenheit einfrieren.

Wenn jemand um 11:30 Uhr ein lokales Commit vornimmt, aber erst um 12:30 Uhr zu den zentralen Repos schiebt, kann ich das später feststellen?

Kann ich erkennen, ob jemand, der nach 12:00 agiert, einen lokalen Commit gemacht hat, um ein aufgezeichnetes Commit-Datum von 11:30 Uhr zu haben, und dann diesen Upstream geschoben hat?

    
Rich 13.06.2012, 10:16
quelle

3 Antworten

10

Git selbst verfolgt diese Informationen nicht, aber ich konnte den Zeitstempel der Dateierstellung in der Objektdatei commit im Verzeichnis "objects" im git-Repository auf dem Server selbst betrachten.

    
Rich 14.06.2012, 10:20
quelle
2

git protokolliert nicht, wenn Dinge in ein Repository gepusht werden (oder abgerufen werden), nur die beiden Zeitstempel auf den Commits selbst, also glaube ich nicht, dass es einen zuverlässigen Weg gibt, dies zu tun, ohne Hooks zu schreiben würde zusätzliche Metadaten irgendwo für Sie speichern oder sich auf die Protokollierung verlassen, die von git-daemon, ssh oder Ihrem http-Server ausgeführt wird, je nachdem, welche Methode zum Drücken / Abrufen verwendet wird.

    
twalberg 13.06.2012 13:59
quelle
1

Sie können entweder einen Hook verwenden, wahrscheinlich den Post-Receive-Hook , um ihn zu speichern die erforderlichen Informationen irgendwo selbst, oder aktivieren Sie einfach den Reflog (es ist standardmäßig in einem blanken Repository deaktiviert). Der Reflog verfolgt automatisch die lokale Historie einer Verzweigung, und z. git reflog -1 --format=%H master@{12:00} wird Ihnen sagen, um welchen Commit der Masterreferenzpunkt um 12:00 Uhr war.

Beachten Sie, dass der Reflog abläuft. Sie können die Ablaufzeit mit gc.reflogexpire .     

Michał Politowski 13.06.2012 13:29
quelle

Tags und Links