Was ist der beste Weg, um einen Konflikt zu lösen, wenn Sie eine git svn rebase
machen, und der git-Zweig, in dem Sie sich befinden, wird "(no-branch)"?Wie löst man einen Konflikt mit git-svn?
Antwort
Sie können git mergetool
verwenden, um die Konflikte in der üblichen Weise anzuzeigen und zu bearbeiten. Sobald Sie die Konflikte gelöst sind sicher, werden tun git rebase --continue
die rebase fortzusetzen, oder wenn Sie wollen nicht, dass die Revision enthalten tun git rebase --skip
Während ein git svn rebase
tun, wenn Sie sich hier Konflikte fusionieren haben einige Dinge zu erinnern:
1) Wenn bei der Durchführung eines Rebases etwas Schlimmes passiert, landen Sie in einem Zweig (no-branch)
.
2) Wenn Sie git status
ausführen, erhalten Sie eine .dotest
Datei in Ihrem Arbeitsverzeichnis sehen. Dies ist sicher zu ignorieren.
3) Wenn Sie die Rebase abbrechen möchten, verwenden Sie den folgenden Befehl.
git rebase --abort
4) Wenn Sie einen Merge-Konflikt haben:
- die Dateien manuell bearbeiten, um die Konflikte zu lösen
- Stufen alle Änderungen mit
git add [file]
- weiter das Fütterungsmaterial mit
git rebase --continue
- Wenn git fragt: "Hast du vergessen,
git add
anzurufen?", Dann haben die Änderungen den Konflikt in eine No-Op-Änderung verwandelt . Fahren Sie mitgit rebase --skip
- Wenn git fragt: "Hast du vergessen,
Möglicherweise haben Sie diesen Vorgang wiederholen, bis das Fütterungsmaterial abgeschlossen ist. Zu jedem Zeitpunkt können Sie git rebase --abort
stornieren und die Rebase abbrechen.
1: Es gibt keine --abort
Option für git svn rebase
.
2: Es gibt keine --continue
Option für git svn rebase
.
3: Das ist sehr seltsam, aber die Dateien befinden sich in einem Zustand, in dem Git denkt, dass sie nach diesem bestimmten Patch gleich sind. Die Lösung ist es, , dass Patch auf der Rebase "überspringen".
Dies half, danke. Also, andere haben mein Problem nicht. Lassen Sie 'mergetool' Ihre Änderungen durchführen, aber" committen "Sie nicht. Rufen Sie einfach 'git rebase - auf, mit Ihren gestuften Änderungen. – slf