Machen Sie svn add rückgängig, ohne die lokalen Änderungen zurückzusetzen


157

Ich habe versehentlich svn add *eine Reihe von Dateien ausgeführt und hinzugefügt, die sich nicht im Repository befinden sollten. Ich habe auch lokale Änderungen in einigen Dateien, die ich behalten möchte. Gibt es eine einfache Möglichkeit, das einfach rückgängig zu machen, svn addohne die lokalen Änderungen zurückzusetzen? Der Hauptvorschlag, den ich bei Google sehe, ist svn revert, der angeblich die lokalen Änderungen rückgängig macht.

Antworten:


282

Das wäre:

svn rm --keep-local

Mir geht es genauso. :-P

Viele Leute haben kommentiert, dass Sie verwenden sollten:

svn rm --keep-local FILENAME

Anwenden des Befehls auf eine oder mehrere Dateien anstelle von allem, was unbeabsichtigte Nebenwirkungen haben kann.


1
Das hatte für mich keine Wirkung. Ich habe den Code wie oben (einschließlich der nachfolgenden Periode) aus dem Basisordner ausgeführt. Ich bin mir nicht sicher, ob mir etwas fehlt.
zzz

8
Beachten Sie, dass Sie dem Befehl einen Dateinamen hinzufügen müssen, damit dies der Fall ist svn rm --keep-local FILENAME. Sie FILENAMEkönnen * verwenden, um mehrere Dateien abzugleichen (wenn Sie das Glück haben, ein Muster zu haben).
Adam Badura

4
Warnung! -
Wenn Sie

2
Wenn Sie dies festschreiben, beinhaltet das Festschreiben dann nicht das Entfernen der betreffenden Datei aus dem Repo?
JWG

1
//, ich habe die gleiche Frage wie jwg. Ich habe einige Änderungen an einer SVN-gesteuerten Datei vorgenommen. Ich möchte diese Änderungen lokal beibehalten. Ich möchte die Datei jedoch nicht vollständig aus dem Repository entfernen. Ich möchte meine lokalen Änderungen einfach nicht in die Datei übertragen.
Nathan Basanese

34

Wenn sich diese Dateien in einem Verzeichnis befinden, das noch nicht festgeschrieben wurde, können Sie den gesamten Verzeichnisinhalt aus dem nächsten Festschreiben entfernen, indem Sie folgende Schritte ausführen:

svn delete --keep-local /path/to/directory

Wenn sich diese Dateien jedoch bereits im Repository befinden und jetzt Änderungen enthalten, die Sie nicht festschreiben möchten, können Sie den Rest der Dateien mithilfe von Änderungslisten festschreiben:

svn changelist somename /file/to/be/committed
svn commit --changelist somename

7

Sie können Ihre Kaufabwicklung folgendermaßen reparieren:

  1. Sichern Sie Ihre lokalen Dateien
  2. Setzen Sie die SVN-Kasse zurück
  3. Stellen Sie die Dateien wieder her

- -

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 

Der letzte Befehl erstellt immer eine zusätzliche Verzeichnisebene, dh endet mit YOURDIR/YOURDIR/, obwohl ich denke, dass das Problem bei der Erstellung des ersten Sicherungsbefehls liegt YOURDIR.bak/YOURDIR/.
James

Um dies zu vermeiden, erfordert rsync einen abschließenden Schrägstrich im Quellverzeichnis. Ich habe die Antwort bearbeitet.
Brice M. Dempsey

3

Ich hatte das gleiche Problem, ich habe versehentlich ein / Verzeichnis hinzugefügt svn add, das die Binärdateien und die kompilierte Datei enthält. Dieser Befehl löscht tatsächlich das Verzeichnis.

svn rm --force <directory-name>

In meinem Fall brauche ich das Verzeichnis nicht, daher war es sicher zu löschen. Wenn Sie die Dateien / Verzeichnisse speichern möchten, speichern Sie sie an einem Ort, bevor Sie den Befehl anwenden und sie zurückkopieren

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.