Ich habe verschiedene Beispiele gefunden, wie man ein SVN-Commit wie zurücksetzt
svn merge -r [current_version]:[previous_version] [repository_url]
oder
svn merge -c -[R] .
Aber keiner von ihnen scheint zu funktionieren. Ich habe diese Befehle ausprobiert und die Dateien überprüft, die von Hand geändert wurden.
Wie kann ich ein Commit mit der Revisionsnummer 1944 zurücksetzen? Wie überprüfe ich, ob das Zurücksetzen durchgeführt wurde (ohne in der tatsächlichen Datei nachzuschauen, ob die Änderungen zurückgesetzt wurden)?
Antworten:
Beide Beispiele müssen funktionieren, aber
svn merge -r UPREV:LOWREV .
Bereich rückgängig machensvn merge -c -REV .
Einzelne Revision rückgängig machenin dieser Syntax - wenn das aktuelle Verzeichnis WC ist und (wie in muss nach jeder Zusammenführung durchgeführt werden) Sie Ergebnisse festschreiben
Möchten Sie Protokolle sehen?
quelle
svn: Merge source required
. Kein Würfel.svn merge -c -42587,-42589 .
Wenn Sie den TortoiseSVN- Client verwenden, können Sie dies einfach über das Dialogfeld "Protokoll anzeigen" tun .
quelle
svn merge -r 1944:1943 .
sollte die Änderungen von r1944 in Ihrer Arbeitskopie zurücksetzen. Sie können dann die Änderungen in Ihrer Arbeitskopie (mit Diff) überprüfen, müssen jedoch einen Commit durchführen, um die Wiederherstellung auf das Repository anzuwenden.quelle
svn merge -r 1944:1943 .
stattdessen, aber nichts hat sich geändert.svn status
nochsvn diff
gibt etwas.svn: Try 'svn help' for more info svn: Merge source required
svn merge -r 1945:1943 .
scheint funktioniert zu haben. Ich glaube, ich verstehe: Sie müssen die Version von "vor" dem "schlechten" Commit in Ihr Arbeits-Repository zusammenführen. Dies ist in Ordnung, wenn Sie das vorherige Commit einfach zurücksetzen möchten. Was aber, wenn Sie die mit Version 1900 vorgenommenen Änderungen rückgängig machen möchten?Stellen Sie zunächst die Arbeitskopie auf 1943 zurück.
Zweitens überprüfen Sie, was festgeschrieben werden soll.
Drittens Commit-Version 1945.
Viertens schauen Sie sich das neue Protokoll an.
quelle
Es ist unmöglich, eine Revision "aufzuheben", aber Sie können Ihre Arbeitskopie auf Version 1943 zurücksetzen und diese als Version 1945 festschreiben. Die Versionen 1943 und 1945 sind identisch, wodurch die Änderungen effektiv rückgängig gemacht werden.
quelle
svn dump
und dannsvn load
. Aber dies sollte natürlich nicht unter normalen Umständen verwendet werden.$ git revert
. Ich fand es etwas schwierig, SVN zu lernen, nachdem ich Git so lange benutzt hatte.Das Folgende führt einen Trockenlauf durch, wie es heißt. HEAD ist die aktuelle Version, PREV ist die vorherige, dann der Pfad zu Ihrer Datei oder dem festgeschriebenen Element:
Wenn der Trockenlauf gut aussieht, führen Sie den Befehl ohne den --dry-run aus
Überprüfen Sie die Änderung in der Revision und schreiben Sie sie erneut fest. Um nach Versionsnummern zu suchen, versuchen Sie:
quelle
quelle
Alex, versuchen Sie Folgendes: svn merge [WorkingFolderPath] -r 1944: 1943
quelle
Während die bereits gegebenen Vorschläge für einige Leute möglicherweise funktionieren, funktioniert sie für meinen Fall nicht. Bei der Durchführung der Zusammenführung synchronisieren Benutzer, bei
rev 1443
denen ein Update durchgeführt wirdrev 1445
, weiterhin alle geänderten Dateien1444
, obwohl sie den Angaben1443
aus der Zusammenführung entsprechen. Ich brauchte Endbenutzer, um das Update überhaupt nicht zu sehen.Wenn Sie das Commit vollständig ausblenden möchten, können Sie einen neuen Zweig mit der richtigen Revision erstellen und dann die Zweige austauschen. Das einzige, was Sie tun müssen, ist, alle Sperren zu entfernen und erneut hinzuzufügen.
Das hat bei mir funktioniert, vielleicht ist es für jemand anderen da draußen hilfreich =)
quelle
Das hat mir das Leben gerettet.
Ich hatte das gleiche Problem, nachdem ich zurückgesetzt hatte, sah ich auch keinen alten Code. Nachdem ich den obigen Befehl ausgeführt habe, habe ich einen sauberen alten Versionscode erhalten.
quelle
Ich habe das oben genannte versucht, (
svn merge
) und du hast recht, es macht Jack. jedochscheint zu funktionieren, ist aber nicht permanent (mein svn zeigt einfach eine alte revision). Also musste ich
In meinem speziellen Fall ist mein Ziel
interfaces/AngelInterface.php
. Ich habe Änderungen an der Datei vorgenommen, sie festgeschrieben, den Build-Computer aktualisiert, auf dem der PHPDOC-Compiler ausgeführt wurde, und festgestellt, dass meine Änderungen Zeitverschwendung waren.svn log interfaces/AngelInterface.php
zeigt meine Änderung als r22060 und das vorherige Commit für diese Datei war r22059. Also kann ichsvn update -r 22059 interfaces/AngelInterface.php
und am Ende habe ich wieder Code wie in -r22059. Dann :-Alternativ könnte ich dasselbe in einem Verzeichnis tun, indem ich
. -R
anstelleinterfaces/AngelInterface.php
aller oben genannten Angaben mache .quelle
Wenn Sie Commits vollständig aus dem Verlauf entfernen möchten, können Sie das Repo auch bei einer bestimmten Revision sichern und dann diesen Speicherauszug importieren. Speziell:
Der Befehl svnrdump hat dieselbe Funktion wie der Befehl svnadmin dump, funktioniert jedoch auf einem Remote-Repo.
Als nächstes importieren Sie einfach die Dump-Datei in das Repo Ihrer Wahl. Dies wurde getestet, um bei Beanstalk gut zu funktionieren.
quelle