Ich benutze git svn, um mit einem Client zu arbeiten, der ein svn-Repository hat (unser Zeug ist in github).
Also folge ich den Anweisungen und mache eine git svn rebase und dann git svn dcommit
Das hat zum allerersten Mal funktioniert, aber seitdem widerspricht Rebasing immer fast jedem Commit. Es sieht so aus, als ob es nicht merkt, welche Verpflichtungen meine sind, und beschwert sich, dass Dinge widersprüchlich sind. Jedes Mal, wenn ich Rebase git - skip meinen Weg durch, bis es diejenigen passiert und erfolgreich meine neuesten Commits. Es kommt nie heraus, wo ich das letzte Mal war, als ich eine Rebase gemacht habe (was ich glaube, was passieren soll).
Vor allem ... warum? Kann ich das dann irgendwie umgehen?
%Vor% Erstellen Sie zunächst einen neuen Zweig basierend auf dem Upstream-SVN: git checkout -b mynewbranch refs/remotes/oldbranch
(verwenden Sie hier die ID git-svn ref).
Dann schau es dir an: git checkout mynewbranch
.
Wählen Sie schließlich die Commits von Ihrem neuen Zweig aus, die nicht an SVN gebunden waren (etwa wie git cherry-pick refs/remotes/oldbranch..oldbranch
.
Die wahrscheinlichste Ursache für die Probleme, die Sie sehen, besteht darin, dass Sie den Verlauf neu schreiben, nachdem Sie eine Änderung an SVN vorgenommen haben. Wenn Sie git-svn
für ein Commit verwenden, wird git-svn-id
in das Commit-Protokoll eingefügt, wodurch der Revisions-Hashwert geändert wird. Wenn Sie das Commit dann verschieben, beginnen Sie in einem alternativen Universum zu arbeiten, in dem die SVN-Versionen mit den lokalen Nicht-SVN-Konflikten in Konflikt stehen.