2016-03-29 18 views
0

Ich versuche herauszufinden, wie die Zeitstempel der Dateien in meinem Repo festgelegt werden. Bei einem git push möchte ich, dass die letzten Änderungsdaten meiner Dateien in der Vergangenheit liegen und nicht zum Zeitpunkt des Hochladens.So legen Sie den Dateizeitstempel in Remote Git Repo fest?

Ich kann das Commit-Datum manuell einfach genug einstellen, aber das bedeutet nur, dass ich eine Tage alt Commit auf meinem Remote-Repo mit Dateien habe, die gerade jetzt geändert wurden.

Ich weiß, es gibt Probleme mit der Suche nach ähnlichen Themen, aber das ist ein persönliches Repo und ich möchte nur dieses herauszufinden. Wo zeichnet Git die Datei modifizierte Daten von einem Push? Gibt es ein Skript oder eine Erweiterung, die mich tun lassen, was ich möchte?

+0

Dateien haben keine Zeitstempel, in git. Nur commits haben Zeitstempel. Das ist der Grund, warum all diese anderen Fragen entweder aufgehört haben, oder eine Hilfsdatei hinzuzufügen, die "Zeitstempel enthält, die Sie nach Erhalt in Ihre Dateien setzen können" (die Aux-Datei kann * nur * die Zeitstempel sein, oder ein Programm, das die Einstellung vornimmt) sowie die Stempelwerte). Übrigens ist das Datum in einer Datei, die git während eines Git-Checkouts ändern muss, nur das aktuelle Datum auf Ihrem Computer, d. H. Git schreibt die Datei einfach und lässt Ihren Computer als "jetzt" stempeln. – torek

+0

Hier ist ein Skript, das das tun könnte, wonach Sie suchen: https: //gist.github.com/jeffery/1115504 – paulsm4

+0

Auf einem git push möchte ich, dass die letzten Daten meiner Dateien in der Vergangenheit liegen und nicht die Zeit des Hochladens. Git kümmert sich nicht um den Zeitstempel Ihrer Dateien. – CodeWizard

Antwort

0

https://git.wiki.kernel.org/index.php/Git_FAQ#Why_isn.27t_Git_preserving_modification_time_on_files.3F

Warum Git ist nicht Änderungszeit auf Dateien zu bewahren?

Die Änderungszeit für Dateien ist eine Funktion, die sich auf Build-Tools auswirkt.
Die meisten Build-Tools vergleichen den Zeitstempel der Quelle (n) mit dem Zeitstempel der abgeleiteten Datei (en).

Wenn die Quelle neuer ist, findet eine Neuerstellung statt, ansonsten passiert nichts. Dies beschleunigt den Build-Prozess sehr.

Nun überlegen Sie, was passieren würde, wenn Sie einen anderen Zweig auschecken und die Bearbeitungszeiten erhalten bleiben. Wir gehen davon aus, dass Sie bereits ein vollständiges Projekt haben.

Wenn eine Quelldatei in diesem anderen Zweig einen Zeitstempel hat, der älter ist als der der entsprechenden abgeleiteten Datei, wird die abgeleitete Datei nicht erstellt, auch wenn sie anders ist, da das Erstellungssystem nur Änderungszeiten vergleicht.

Im besten Fall erhalten Sie einen seltsamen sekundären Fehler; aber am Anfang wird wahrscheinlich alles gut aussehen, aber Sie werden nicht das selbe Ergebnis bekommen, wie Sie es mit einem sauberen Build hätten. Diese Situation ist ungesund, da Sie wirklich nicht wissen, welchen Code Sie ausführen, und die Quelle des Problems ist schwer zu finden.

Sie werden immer einen sauberen Build erstellen müssen, wenn Sie die Zweige wechseln, um sicherzustellen, dass Sie die richtige Quelle verwenden.

(Git bisect ist ein weiteres Git Prozedur, die alte und neue Revisionen überprüft, wo Sie eine zuverlässige Wiederherstellung benötigen.)
Git stellt die aktuelle Zeit als Zeitstempel für jede Datei das sie modifiziert, sondern nur diejenigen. Die anderen Dateien bleiben unberührt, was bedeutet, dass Build-Tools von der Modifikationszeit abhängig sein und korrekt wiederhergestellt werden können. Wenn sich Build-Regeln ändern, kann dies ohnehin zu einem Fehler führen, aber das ist ein weitaus seltener auftretendes Problem als das versehentliche Umbauen.

Verwandte Themen