Ich habe es heute Morgen geschafft, mich in den Fuß zu schießen, indem ich Folgendes getan habe:
- Ich habe angefangen, an einer Änderung an meinem Projekt zu arbeiten
- Eine Reihe von Änderungen an einer Reihe von Dateien vorgenommen
- Mir wurde klar, dass mein Ansatz völlig falsch war und ich von vorne anfangen musste
- cd'd auf die oberste Ebene meines Projekts und machte eine "svn --recursive Revert". um meine lokale Sandbox auf den Status vor den Änderungen zurückzusetzen.
- Heulte entsetzt auf, als mir klar wurde, dass in meinem lokalen Sandkasten noch einige andere Änderungen ausstanden, und ich hatte sie alle ausgelöscht. (Der SVN-Server war letzten Freitag ausgefallen, sodass ich sie nicht einchecken konnte und sie über das Wochenende vergessen hatte.)
Glücklicherweise hatte ich in diesem Fall eine "svn diff> temp.txt" erstellt, bevor ich die Arbeit am Freitag verließ, und die temp.txt-Datei befand sich noch auf meiner Festplatte, sodass ich diese Datei in "patch" einspeisen und meine wiederherstellen konnte verlorene Änderungen.
Aber für meine zukünftige Referenz (dh wenn ich das nächste Mal den gleichen dummen Fehler mache) ... gibt es eine Möglichkeit, svn anzuweisen, ein "svn-Zurücksetzen" rückgängig zu machen? Bewahrt svn irgendwo ein Backup der lokalen / nicht eingecheckten Unterschiede auf?
Antworten:
Nein, (absolut) NEIN .
Wenn Sie zu Subversion sagen, dass eine Datei zurückgesetzt werden soll, sind alle Änderungen vom Wind verschwunden.
Nur dein Gedächtnis kann sie zurückbekommen.
Ausnahme: Neue Dateien, die Sie hinzugefügt haben, verlieren nur ihren Status "hinzugefügt", aber die Datei bleibt in diesem Verzeichnis, nur der Status ist unbekannt ("?")
Plattform- / Software-Ausnahme: Bei Verwendung von TortoiseSVN unter Windows wirft Revert die Dateien zuerst in den Papierkorb und setzt sie dann zurück. Sie können in den Papierkorb greifen, um die Dateien wiederherzustellen.
quelle
Es gibt eine Lösung ... Gehen Sie in Ihren Papierkorb. Dort finden Sie die neueste Version der gelöschten Datei. Schildkröte "wirft" jede Datei, die sie zurücksetzt, in den Papierkorb.
quelle
Nicht wirklich Subversion-spezifisch, aber wenn Sie mit Eclipse arbeiten, können Sie Ihr Glück in der lokalen Geschichte versuchen.
Nun etwas Subversion-spezifischeres: Wenn Sie nicht bei jeder Änderung einen Zweig erstellen möchten, können Sie einige Trunk-Dateien lokal auschecken lassen (Trunk-Modif-1, Trunk-Modif-2). .). Jede "Änderung" wird in einem separaten Baum durchgeführt und Sie müssen nur eine Liste führen, welche Check-Outs welcher Änderung entsprechen.
Oder Sie könnten Git lokal verwenden, aber ich habe es nie versucht.
quelle
Vor kurzem ist dieser Fehler aufgetreten, keine neuen Dateiänderungen (ca. 10) auf SVN zu übertragen, und alle sind aufgrund meines dummen Fehlers verschwunden. Was mich jedoch gerettet hat, war die Windows-Option "Frühere Versionen wiederherstellen" im Kontextmenü. Puh, das war eine Erleichterung und Lektion gelernt.
quelle
Sie können die Dateien nicht wiederherstellen, wenn Sie den svn-Befehlszeilenclient verwenden .
Sie können sie jedoch wiederherstellen, wenn Sie TortoiseSVN als SVN-Client verwenden. TortoiseSVN verschiebt sie automatisch in den Papierkorb. Sie können sie von dort nach einem versehentlichen Zurücksetzen wiederherstellen.
Dies ist eine konfigurierbare Option in TortoiseSVN. Es befindet sich unter Einstellungen -> Dialog 1 -> Papierkorb beim Zurücksetzen verwenden.
Standardmäßig ist diese Option aktiviert. Dies bedeutet, dass Dateien in den Papierkorb verschoben werden. Wenn Sie möchten (meistens möchten Sie dies nicht deaktivieren. Wenn Sie einen Grund haben, lassen Sie es mich bitte auch wissen).
quelle
Wenn Sie InteliJ verwenden, sind Sie eine glückliche Person. Im oberen Menü haben Sie eine Option zur Versionskontrolle. Darunter finden Sie die Option für den lokalen Verlauf, in der Sie den gesamten Verlauf für die ausgewählte Datei finden, einschließlich aller Vorgänge, die Sie mit dieser Datei ausgeführt haben (Aktualisieren, Festschreiben, Zurücksetzen).
Viel Glück, Arkde
quelle
Auch wenn Sie Ihren .NET-Code (.cs-Dateien usw.) zurückgesetzt und Ihre Anwendung vor dem Zurücksetzen erstellt haben, aber nachdem Sie Änderungen vorgenommen haben, können Sie Änderungen aus der Assembly-Datei mit einem der Reflektor-Tools wiederherstellen, um Code anzuzeigen.
quelle
Ich habe die Lösung zurückgesetzt (Visual Studio + AnkhSVN) und Änderungen an wenigen Dateien verloren. Ich kann die Datei nicht im Papierkorb finden.
ABER: Ich habe meine verlorenen Dateien mit Handy Recovery wiederhergestellt, dh SVN löscht meine Dateien einfach beim Zurücksetzen.
Verwenden Sie eine beliebige Datenwiederherstellungssoftware, um zurückgesetzte Dateien wiederherzustellen (z. B. Testversion von Handy Recovery ).
quelle
Ich hatte großes Glück, ein lokales Änderungsprotokoll der Datei (Local Revisions) im Verlaufsbrowser in Eclipse zu finden. Ich hatte die Unterschiede nacheinander überprüft und vor dem Überschreiben einige Speicherungen in der Datei vorgenommen.
quelle
Nein, SVN führt kein Protokoll oder Backup (obwohl in den anderen Antworten eine Lösung für TortoiseSVN angegeben ist).
Aber falls jemand die Antworten durchsucht und diesen Kommentar in der Frage des OP nicht bemerkt hat:
"Glücklicherweise hatte ich in diesem Fall eine" svn diff> temp.txt "erstellt, bevor ich die Arbeit am Freitag verließ, und die temp.txt-Datei befand sich noch auf meiner Festplatte, sodass ich diese Datei in" patch "einspeisen und wiederherstellen konnte meine verlorenen Veränderungen. "
Ich stelle mir vor, es ist ein gängiges Paradigma, 'svn diff' zu machen, BEVOR Sie ein 'svn revert' machen. Wenn Sie sich angewöhnen, dies zu tun, haben Sie mindestens einen möglichen Weg, um Ihre verlorenen Änderungen wiederherzustellen, selbst wenn der Diff nur an das Terminal zurückgegeben wird.
quelle