Wie kombiniert man zwei getrennte, beziehungslose Git-Repositorys in einem mit single-Geschichte timeline
Habe ich zwei voneinander unabhängige (nicht gemeinsam Vorfahren Einchecken) Git-repositories, ist eine super-repository, welches aus einer Reihe von kleineren Projekten (Lets call it repository Ein). Das andere ist nur ein Notbehelf lokalen Git-repository für ein kleineres Projekt (nennen wir es-repository B). Grafisch, würde es so Aussehen
A0-B0-C0-D0-E0-F0-G0-HEAD (repo A)
A0-B0-C0-D0-E0-F0-G0-HEAD (remote/master bare repo pulled & pushed from repo A)
A1-B1-C1-D1-E1-HEAD (repo B)
Ideal, ich würde wirklich gerne merge-repo-B in Ein repo mit einer einzigen Geschichte timeline. So scheint es, dass ich ursprünglich startete das Projekt im repo A. Grafisch, wäre dies der ideale end-Resultat
A0-A1-B1-B0-D1-C0-D0-E0-F0-G0-E1-H(from repo B)-HEAD (new repo A)
A0-A1-B1-B0-D1-C0-D0-E0-F0-G0-E1-H(from repo B)-HEAD (remote/master bare repo pulled & pushed from repo A)
Habe ich etwas zu Lesen mit teilmodule und Unterstruktur (Pro Git ist ein ziemlich gutes Buch, übrigens), aber beide scheinen zu befriedigen, Lösung zur Beibehaltung von zwei separaten Zweig mit sub-Modul ist in der Lage, pull-änderungen von upstream-und der Teilbaum wird etwas weniger Kopfschmerzen. Beide Lösung erfordern zusätzliche und spezielle git-Befehle zu handhaben, check-ins und die Synchronisierung zwischen master-und sub-tree/Modul Zweig. Beide Lösung mehrere timelines (mit Teilbaum erhalten Sie sogar 3 separate Zeitleisten, wenn Sie --squash).
Die nächste Lösung, SO scheint zu sprechen "graft", aber ist das wirklich er? Das Ziel ist ein einheitliches repository, wo kann ich die pull/push-check-ins, so dass es nicht mehr repo-B, nur repo Ein Ende.
- mögliche Duplikate von Wie haben Sie Zusammenführen von zwei git-repositories?
- Nein, ich lehne Teilbaum & submodule Lösung als Szenario ist nicht das gleiche
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Sie es so machen:
A0-A1-B1-B0-D1-C0-D0-E0-F0-G0-E1-H(aus repo-B)-KOPF (neue repo-A)
Sie können wählen Sie zunächst die A0 als Ausgangspunkt, dann mit git cherry-pick, eins nach dem anderen.
Hoffe, dies ist nützlich für Sie.
Br,
Tim
Habe ich etwas ähnliches (merge-Geschichte von B in A) wie folgt:
git fetch <ref to your repo B> master:new-branch-on-A
(also, Sie haben kopiert, master-Zweig von B in einen neuen branch "new-branch-on-A' in deine repo A.git checkout new-branch-on-A
git rebase master
(Sie rebase die neuen-Filiale-auf-Ein mit dem master-Zweig)git checkout master
git merge new-branch-on-A
git branch -d new-branch-on-A
git rebase -i
ist dein Freund, wenn nötig).