2010-06-01 24 views
65

Ich habe SVN für alle meine Projekte verwendet. Manchmal Projekt B stammt als eine Kopie aus Projekt A. Wenn Projekt A eine generische Änderung hat, kann ich innerhalb des Verzeichnis B verwenden und es wird diese Änderungen zusammenführen.git verschiedene Repositories zusammenführen?

Jetzt, wenn ich Git verwenden wollte. Ich mag es nicht, alle meine Projekte im selben Repository zu haben, da ich dann alles klonen muss und nicht nur ein Projekt wie in SVN auswählen kann. Aber mit einem Repository für jedes Projekt, wie mache ich das gleiche wie früher mit SVN?

Die Frage ist: Was ist der beste Weg, es zu strukturieren, wenn ich mehrere Teilprojekte mag, dass wirklich alle auf ein Original-Projekt beziehen und sie synchron zu halten? Und das möchte ich auch in der Lage sein, sie getrennt zu prüfen

+1

Sie sollten wahrscheinlich git-submodule (http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html) genauer betrachten. – Cascabel

+0

@Jefromi aber die Quelldateien sind grundsätzlich aus der gleichen Geschichte, dies würde bedeuten, dass ich zwei Kopien der Dateien habe? Ich denke Submodul ist mehr für die Verfolgung von externen Bibliotheken, die Sie als separate Dateien (nicht zusammenführen)? – baloo

+0

Egal, ich habe nicht gesehen, dass du gesagt hast, B sei eine Kopie von A. Lies deine "Frage ist", wo du gesagt hast "Teilprojekte ... in Bezug auf ein originelles Projekt ... synchron" Ich nahm an, du meintest Chunks des ursprünglichen Projekts herausnehmen, aber im Metaprojekt synchron halten. – Cascabel

Antwort

113

Wenn Sie zwei Projekte, proj1 und proj2 und wollen Änderungen von proj1 in proj2 verschmelzen, können Sie es wie folgt tun würde:

# in proj2: 
git remote add proj1 path/to/proj1 
git fetch proj1 
git merge proj1/master # or whichever branch you want to merge 

Ich glaube, das macht das Gleiche wie das, was du mit SVN gemacht hast.

+0

Aber wird Änderung # 2 zusammenführen Spur, die wir bereits zusammengeführt haben Änderung Nr. 1 tut es so? Ich musste alle Änderungen (und Konflikte korrigieren) für alle Änderungen jedes Mal neu zusammenführen, wenn eine neue Änderung hinzugefügt wurde, wenn ich mich richtig erinnere. Dies ist nicht der SVN-Weg passiert – baloo

+0

Natürlich funktioniert Merge wie üblich. Sie müssen nicht alle Änderungen erneut einfügen. Dies ist nichts anderes als die übliche Zusammenführung, die Sie mit einem entfernten Server verwenden würden. –

+0

Was ist, wenn ich keine Fernbedienung habe? Ich würde gerne das gleiche machen (füge ProjA in ProjB), aber ich arbeite nur lokal ohne Fernbedienungen. –

Verwandte Themen