Ich wollte ein Diff zur Überprüfung für ein Open Source-Projekt einreichen .
Ich habe den Code mit SVN (vom Terminal Ubuntu) erhalten. Und ich habe kleinere Änderungen in wenigen Dateien vorgenommen. Jetzt gibt es nur noch eine einzige Änderung, die ich einreichen möchte. Die restlichen Änderungen, die ich vorgenommen habe, waren für das Debuggen bestimmt und werden nicht mehr benötigt.
Ich habe diff mit generiert svn di > ~/os/firstdiff.diff
Also meine Frage: Wie kann ich meine lokalen Änderungen verwerfen?
Gibt es eine SVN-Möglichkeit, dies zu tun? Wenn nicht, muss ich zu jeder Datei gehen und alle meine Änderungen löschen. Dann würde ich ein neues Diff generieren und es einreichen.
Sie müssen alle Änderungen mit dem Befehl svn revert zurücksetzen :
svn revert foo.c
svn revert --recursive .
quelle
svn revert --recursive .
hilft mir sehr .--recursive
Parameter alle lokalen Änderungen zurücksetzt und dies die Frage ist.So verwerfen Sie lokale Änderungen in einer bestimmten Datei:
So verwerfen Sie lokale Änderungen in einem bestimmten Ordner:
quelle
Einfach
svn revert
war genug für das Originalplakat. Ein einfacherersvn revert
Fall reicht jedoch nicht für den allgemeineren Fall, in dem Sie sich befinden@ ErichBSchulz 'Vorschlag zur Verwendung
git add -p
ist sehr vernünftig und in einem solchen Fall viel allgemeiner anwendbar. Der Antwort fehlten nur einige Details. Angenommen, Ihr aktuelles Verzeichnis ist das Verzeichnis, in dem Sie den gemeinsam nutzbaren Patch erstellen möchten, können Sie Folgendes tun:Testen Sie die makellose Version von der Subversion in ein anderes Verzeichnis (wählen Sie einen nicht vorhandenen Verzeichnisnamen aus, hier über das Unterverzeichnis
TMP/
).Initiieren Sie auf der Grundlage dieser unberührten SVN-Prüfung ein Git-Repository und ignorieren Sie die SVN-Verzeichnisse. Übertragen Sie alles in svn head in Ihr temporäres Git-Repository
Kopieren Sie die neu vorbereiteten Git-Repository-Metadaten in Ihr ursprüngliches Arbeitsverzeichnis. Da das makellose Subversion-Checkout-Verzeichnis nicht benötigt wird, können Sie es entfernen. Ihr Arbeitsverzeichnis ist jetzt sowohl Git- als auch Subversion-Repository:
Sie können jetzt leistungsstark und bequem verwenden,
git add -p
um interaktiv genau das auszuwählen, was Sie freigeben möchten, und diese in Ihr Git-Repository zu übertragen. Wenn Sie dem Commit Dateien hinzufügen müssen, tun Sie dies auchgit add <file-to-add>
vorhergit commit
Bereiten Sie mit dem Commit einen Patch vor, den Sie freigeben möchten. Zu diesem Zweck können Sie auch Folgendes verwenden
git diff HEAD^..HEAD
:git format-patch
(Letzteres kann verwendet werden, um E-Mails mit dem Patch oder mehreren Patches direkt vorzubereiten):Um Git-Metadaten loszuwerden, tun Sie es einfach
rm -rf .git/
. Wenn Sie weiterhin mit dem ursprünglichen Arbeitsverzeichnis hacken möchten, können Sie weiterhingit
Ihre lokalen Änderungen verwalten. In diesem Fall würden Sie wahrscheinlich von der Investition in das Erlernen der Verwendung profitierengit svn
.Hinweis: Wenn Sie damit vertraut sind,
git
ist es ziemlich trivial, zu improvisieren. Ansonsten sieht das vielleicht etwas chaotisch aus. Sie können den Ansatz verallgemeinern, indem Sie aus diesen Schritten ein Skript schreiben, um ein "interaktives Commit" oder eine "interaktive Patch-Erstellung" für svn zu implementieren, die ohne Verständnis von git verwendet werden können.quelle
Du könntest benutzen
Vergessen Sie beim Veröffentlichen Ihres Diff nicht, die Revision anzugeben, gegen die Sie sich unterscheiden.
Wie andere antworteten, könnten Sie auch
svn revert
vorsichtig verwenden. Es hängt davon ab, ob Sie Ihre lokalen Änderungen für Ihre zukünftige Arbeit behalten möchten oder nicht ...quelle
revert
ständig meine Änderungen vornehmen wollen . Also würde ich deinen Weg in Zukunft benutzen.Gehen Sie zum Stammverzeichnis dieses Repositorys und führen Sie den folgenden Befehl aus
quelle
svn revert -R .
könnte kürzer seinSie können den Befehl commit für die Datei verwenden, die Sie einfügen möchten, und den Befehl svn revert verwenden, um die verbleibenden lokalen Änderungen zu verwerfen
quelle