Wie stelle ich eine gestaffelte Datei mit Änderungen wieder her und behalte die Änderungen bei, wenn sie inszeniert wurde?

8

Sagen Sie, ich habe eine Datei bearbeitet

%Vor%

Jetzt mache ich zusätzliche Änderungen an den Dateien

%Vor%

Frage: Wie stelle ich die letzte gestaffelte Version wieder her? Ist dies möglich, da es nicht begangen wurde?

    
stackoverflow 15.07.2013, 16:52
quelle

3 Antworten

5

Sie können das wahrscheinlich tun, aber es gibt keinen einzigen einfachen Befehl, um es für Sie zu tun.

Wenn Sie git add ausführen, wurde die Datei bereits zum Repository hinzugefügt, aber es gibt derzeit nichts, was auf sie zeigt, außer dem Index. Wenn Sie eine zweite git add ausführen, wird die neue (Version der) Datei zum Repository hinzugefügt, und die Verknüpfung zwischen dem Index und der ersten Version der Datei wird durch die neue Verknüpfung ersetzt. Aber das erste Objekt ist immer noch da.

Sie können git fsck --dangling verwenden, um eine Liste von Blob-Objekten in Ihrem Repository zu erhalten, auf die zur Zeit nichts referenziert wird, die Sie dann aber nacheinander mit git show , git cat-file usw. durchgehen müssen um festzustellen, welche Datei Sie haben möchten. Sobald Sie die richtige Datei gefunden haben, können Sie git show HASH > somefile.txt (und vielleicht git add somefile.txt ).

Natürlich, wenn Sie git prune , git gc usw. seit dem zweiten git add gemacht haben, was möglicherweise die ursprüngliche Datei aus Ihrem Repository entfernt hat.

Hier ist ein kurzes Beispiel:

%Vor%     
twalberg 15.07.2013, 18:08
quelle
4

Sie können das nicht tun. Git kann Dateien nur auf eine vorherige commit zurücksetzen, nicht auf eine frühere Version. Dies liegt daran, dass die Datei erst in das Repository von git aufgenommen wird, wenn Sie das Commit durchgeführt haben. (Sie können mehr über Best Practices in Coding Horror lesen )

Vielleicht können Sie die undo -Schaltfläche sinnvoll anwenden? (Wenn Sie den Code in einem Editor bearbeitet haben, hat offensichtlich echo ing an die Datei kein Rückgängigmachen).

    
SomeKittens 15.07.2013 17:40
quelle
0

Sie meinen, Sie möchten zu der gestaffelten Version zurückkehren? Ja, das kannst du definitiv tun. Der einfachste Weg besteht darin, die Änderungen, die Sie vorgenommen haben, zu übernehmen, die Datei von diesem Commit zu checken und dann Ihren Zweig zurückzusetzen:

%Vor%

Bearbeiten: Hoppla, tut mir leid, ich habe den Teil nicht bemerkt, in dem Sie die Datei mit den neuen Änderungen neu erstellt haben. Entschuldigung, aber die anderen Antworten sind korrekt: das ist nicht möglich (oder zumindest , nicht sehr einfach). Ich werde diese Antwort aufheben, nur für den Fall, dass jemand anderes ein ähnliches Problem hat, aber den Cache noch nicht überschrieben hat.

    
Ajedi32 15.07.2013 18:18
quelle

Tags und Links