Ich habe git-svn
verwendet, um eine git Spiegel eines SVN-Repository zu erstellen. Die Struktur innerhalb des SVN war etwas abweichend, also hat git einen Zweig erstellt, der keinen gemeinsamen Commit mit dem Zweig master
hat.git - Setzen eines Commit Eltern ohne Rebase
A---B---C topic
D---E---F---G master
ich, dass A
zu begehen wissen basiert weg begehen E
und ich bin ziemlich zuversichtlich, dass ich die Probleme behoben haben verursacht git nicht, diese Tatsache zu erkennen (mit filter-branch
). Was ich tun möchte, ist topic
zum master
Zweig erneut befestigen, E
als Mutter von A
Einstellung:
A---B---C topic
/
D---E---F---G master
git-rebase
scheint nicht, für mich zu arbeiten, weil der Unterschied für A
Listen die Schaffung eines commit ganze Menge von Dateien, die bereits in master
existieren, was zu einer großen Anzahl von Konflikten führt.
Von meinem Verständnis von Git nur Einstellung E
als Eltern von A
sollte genug sein, um alle Probleme zu lösen.
Ist das möglich? Wenn es ist, wie kann ich es tun?
Jede Chance, den Git-Spiegel der Svn-Zeige "Zweige" in das richtige Verzeichnis neu zu initiieren? Oder die SVN-Struktur zuerst reparieren? – stefanw
Tatsächlich verwendete das Repo das Standardstamm/Tag/Zweig-Layout. Der Zweig, den ich reparieren wollte, wurde jedoch erstellt, indem nur ein Unterpfad von trunk kopiert wurde - das war ein bisschen zu viel für git-svn. –
Rebase hat eine 'root' Option. Verwenden Sie das mit den On- und Preserve-Merges, wenn Sie es brauchen. –