Ich habe es heute Morgen geschafft, mich in den Fuß zu schießen, indem ich Folgendes tat:
Glücklicherweise hatte ich in diesem Fall vor dem Verlassen der Arbeit eine "svn diff> temp.txt" erstellt, und die temp.txt-Datei befand sich immer noch auf meiner Festplatte. Daher konnte ich diese Datei in "patch" einfügen und sie wiederherstellen Änderungen verloren.
Aber für meine zukünftige Referenz (d. H. Das nächste Mal, wenn ich den gleichen dummen Fehler mache) ... gibt es eine Möglichkeit, svn mitzuteilen, dass es eine "svn rückgängig machen" rückgängig machen soll? Bewahrt svn irgendwo eine Sicherung der lokalen/nicht eingecheckten Unterschiede auf?
Nein, (absolut)NEIN.
Wenn Sie zu Subversion sagen, dass es eine Datei wiederherstellen soll, werden alle Änderungen vom Wind genommen.
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/Softwareausnahme: Bei Verwendung von TortoiseSVN unter Windows wirft Revert zunächst die Dateien in den Papierkorb und setzt sie anschließend zurück. Sie können in den Papierkorb greifen, um die Dateien wiederherzustellen.
Es gibt eine Lösung ... Gehen Sie in Ihren Papierkorb. Dort finden Sie die neueste Version der gelöschten Datei. Tortoise "wirft" jede zurückgespielte Datei in den Papierkorb.
Nicht wirklich spezifisch für Subversion, aber wenn Sie mit Eclipse arbeiten, können Sie Ihr Glück in der lokalen Geschichte versuchen.
Nun, etwas ein bisschen mehr Subversion-spezifisch: Wenn Sie nicht für jede Änderung, die Sie vornehmen, einen Zweig erstellen möchten, können Sie ein paar Trunk lokal überprüfen 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, deren Auschecken welcher Änderung entspricht.
Oder Sie könnten Git lokal verwenden, aber ich habe es nie probiert.
Kürzlich tat ich diesen Fehler, keine neuen Dateiänderungen (etwa 10) in SVN zu begehen, und alle verschwanden aufgrund meines dummen Fehlers. Was mich jedoch rettete, war die Option "Vorherige Versionen wiederherstellen" im Kontextmenü. Puh, das war eine Erleichterung und eine Lektion gelernt.
Sie können die Dateien nicht wiederherstellen, wenn Sie den Befehlszeilenclient svn verwenden.
Sie können sie jedoch wiederherstellen, wenn Sie TortoiseSVN als Ihren svn-Client verwenden. TortoiseSVN verschiebt sie automatisch in den Papierkorb. Sie können sie nach einem versehentlichen Zurücksetzen von dort wiederherstellen.
Dies ist eine konfigurierbare Option in TortoiseSVN. Es befindet sich unter Einstellungen -> Dialog 1 -> Papierkorb beim Zurücksetzen verwenden.
Standardmäßig ist das Kontrollkästchen aktiviert, dh Dateien werden in den Papierkorb verschoben. Wenn Sie möchten (meistens möchten Sie dies nicht deaktivieren. Wenn Sie einen Grund haben, lass es mich wissen)
Wenn Sie InteliJ verwenden, sind Sie eine glückliche Person. Im oberen Menü haben Sie eine Versionskontrolloption, unter der Sie die lokale Historie finden, in der Sie die gesamte Historie der ausgewählten Datei finden, einschließlich aller Operationen, die Sie mit dieser Datei ausgeführt haben (Update, Commit, Revert).
Viel Glück. Arkde
Auch wenn Sie Ihren .NET-Code (.cs-Dateien usw.) wiederhergestellt haben und Ihre Anwendung vor dem Zurücksetzen erstellt haben. Nachdem Sie jedoch Änderungen vorgenommen haben, können Sie Änderungen an der Assembly-Datei mit einem der Reflektor-Tools zum Anzeigen von Code wiederherstellen.
Ich habe die Lösung (Visual Studio + AnkhSVN) wiederhergestellt und verliere die Änderungen einiger Dateien. Ich kann die Datei nicht im Papierkorb finden.
BUT: Ich habe meine verlorenen Dateien mit Handy Recovery wiederhergestellt, d. H. SVN löscht meine Dateien beim Rücksetzen.
Verwenden Sie eine Datenwiederherstellungssoftware, um wiederhergestellte Dateien wiederherzustellen (z. B. trial Handy Recovery )
Ich hatte großes Glück, ein lokales Änderungsprotokoll der Datei (Local Revisions) im Verlaufsbrowser in Eclipse zu finden. Ich hatte die Unterschiede nacheinander untersucht und vor dem Überschreiben einige Änderungen an der Datei vorgenommen.
Nein, SVN führt kein Protokoll oder Backup (obwohl in den anderen Antworten eine Lösung für TortoiseSVN enthalten ist).
Aber wenn jemand die Antworten durchsucht und diesen Kommentar in der Frage des OP nicht bemerkt hat:
"Zum Glück hatte ich in diesem Fall vor dem Verlassen der Arbeit eine" svn diff> temp.txt "erstellt, und die temp.txt-Datei befand sich immer noch auf meiner Festplatte, sodass ich diese Datei in" patch "einfügen und wiederherstellen konnte meine verlorenen Änderungen. "
Ich kann mir vorstellen, dass es ein allgemeines Paradigma ist, 'svn diff' auszuführen, BEVOR Sie einen 'svn revert' durchführen. Wenn Sie sich daran gewöhnen, dies zu tun, selbst wenn der Diff gerade an das Terminal gesendet wird, haben Sie zumindest einen möglichen Weg, um Ihre verlorenen Änderungen wiederherzustellen.