Die meisten der bisherigen Antworten beziehen sich auf eine umgekehrte Zusammenführung, und das ist in der Regel auch die richtige Antwort. Es gibt jedoch eine Situation (die mir gerade passiert ist), in der dies nicht der Fall ist.
Ich habe versehentlich eine Datei mit Unix-Zeilenenden in DOS-Zeilenenden geändert, als ich eine kleine Änderung vornahm, und habe sie festgeschrieben. Dies lässt sich leicht rückgängig machen, entweder durch Ändern der Zeilenenden und erneutes Committen oder durch ein Reverse Merge, aber es hat den Effekt, dass es svn blame
meine Bearbeitung als Quelle für jede Zeile der Datei aufführen. (Interessanterweise ist TortoiseSVN unter Windows davon nicht betroffen; nur die Kommandozeile svn blame
.)
Wenn Sie die Historie, wie sie von svn blame
Ich denke, Sie müssen Folgendes tun:
- Löschen Sie die Datei und übertragen Sie sie.
- Kopieren Sie im Repository die vorherige gute Kopie der Datei in den Head und übertragen Sie sie.
- Stellen Sie alle Bearbeitungen wieder her, die Sie behalten möchten.
Das Löschen ist ein wenig beängstigend, aber denken Sie daran, dass Sie die Datei immer im Repository gespeichert haben, so dass das Wiederherstellen keine große Sache ist. Zur Veranschaulichung der Schritte hier etwas Code. Nehmen wir an, dass xxx
ist die Revisionsnummer der letzten guten Kopie.
svn rm svn+ssh://path/to/file
svn copy svn+ssh://path/to/file@xxx svn+ssh://path/to -m"Restore good copy"
svn update
<restore the edits>
svn commit -m"Restore edits"
Beachten Sie, dass für eine Kopie im Repository das Ziel ein Verzeichnis und kein Dateiname sein muss.