Als Alternative zur SO-Frage " Wie fügst du selektive Dateien mit Git-Merge zusammen? " Habe ich gerade diesen GitHub-Thread gefunden, der besser zum Zusammenführen eines ganzen Unterverzeichnisses angepasst werden könnte, basierend auf dem Git-Lesebaum :
- Mein Repository =>
cookbooks
Mein Repository-Zielverzeichnis =>cookbooks/cassandra
- Remote-Repository =>
infochimps
Remote-Repository-Quelle, in die ich zusammengeführt werden möchte cookbooks/cassandra=>infochimps/cookbooks/cassandra
Hier sind die Befehle, mit denen ich sie zusammengeführt habe
- Fügen Sie das Repository hinzu und rufen Sie es ab
git remote add -f infochimps git: //github.com/infochimps/cluster_chef.git
- Führen Sie die Zusammenführung durch
git merge --allow-non-related-histories -s our - no-commit infochimps / master
(Dies führt eine Zusammenführung durch, indem die Strategie "Unsere" ( -s ours) verwendet wird, mit der Änderungen aus dem Quellzweig verworfen werden. Dadurch wird die Tatsache aufgezeichnet, die infochimps/masterzusammengeführt wurde, ohne dass tatsächlich eine Datei im Zielzweig geändert wird. )
- Nur zusammenführen
infochimps/cookbooks/cassandraincassandra
git read-tree --prefix = cassandra / -u infochimps / master: kochbücher / cassandra
Dies liest den Baum nur für das erforderliche Quell-Unterverzeichnis, dh cookbooks/cassandraim Upstream-Zweig des Quell- Repositorys.
Beachten Sie, dass der Name des Ziel- Unterverzeichnisses auch lauten sollte cookbooks/cassandra, sonst würden Sie sehen:
fatal: Not a valid object name
- Übernehmen Sie die Änderung
git commit -m 'verschmelzen in infochimps cassandra'
Nachtrag
Es ist bizarr, [mich bearbeiten] - aber der read-treeSchritt kann möglicherweise so fehlschlagen:
error: Entry 'infochimps/cookbooks/cassandra/README' overlaps with 'cookbooks/cassandra/README'. Cannot bind.
... auch wenn beide Dateien identisch sind . Dies könnte helfen:
git rm -r cassandra
git read-tree --prefix=cassandra/ -u infochimps/master:cookbooks/cassandra
Aber natürlich überprüfen Sie manuell, ob dies das tut, was Sie wollen.