2012-03-20 12 views
9

İki ilişkisizim var (herhangi bir ata denetimini paylaşmıyor) Git depoları, biri çok sayıda küçük proje içeren bir süper depodır (Buraya depoyu A derler)). Bir diğeri ise daha küçük bir proje için sadece derme çatma bir yerel Git deposudur (depo B olarak adlandırır). Grafiksel, İdeal buİki ayrı ilişkisiz Git depolarını tek bir tarih zaman çizelgesiyle birleştirmek için nasıl

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) 

gibi görünecektir, gerçekten tek kronolojisi ile repo A içine Repo B birleştirmek istiyoruz. Demek ki ben aslen repo A. grafiksel projeyi başladığını görünür, bu şimdiye Altmodüllerin ve alt ağaç (Pro Git arada oldukça iyi bir kitaptır ile okuyarak biraz yapıyor

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) 

İdeal nihai sonuç olacaktır), ancak her ikisi de üst ve alt ağaç olarak biraz daha az baş ağrısı değişiklikler çıkarmak mümkün alt modülü ile iki ayrı dal sağlamaya yönelik bir çözüm yiyecek ve içecek gibi. Her iki çözüm de, ana ve alt ağaç/modül dalı arasındaki kontrolleri ve senkronizasyonu işlemek için ek ve özel git komutları gerektirir. Her iki çözüm de birden fazla zaman çizelgesiyle sonuçlanır (alt ağaç ile birlikte --squash kullanırken 3 ayrı zaman çizelgesi alırsınız).

SO en yakın çözüm "graft" hakkında konuşmak gibi görünüyor, ama gerçekten bu mu? Amaç artık Repo B, sonunda sadece repo A olmayacak şekilde ben/itme check-ins indirebiliriz tek bir birleşik depo sahip olmaktır.

+0

olası yinelenen http://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories) –

+0

@MichaelDurrant senaryo bu kılavuz ile birlikte aynı – Antony

cevap

5

Sana böyle yapmak düşünüyorum:

  1. git uzak repo içine Repo b olsun getir [Repo b]
  2. budala eklemek // sen geçmişini saklamak istediğiniz nedeniyle bir
  3. böyle: A0-A1-B1-B0-D1-C0-D0-E0-F0-G0-E1-H (repo B'den) Kafa (yeni repo A) önce bir başlangıç ​​noktası olarak A0 seçebilir Bundan sonra git cherry-pick'i birer birer kullanın. bu sizin için yararlıdır

Umut.

Br, Tim

[İki git depoları birleştirme nasıl?] (Içinde
+0

Kombine çözüm olmadığı için Hayır, alt ağaç ve alt modül çözümü reddedecek @ http://gbayer.com/development/moving-files-from-one-git-repository- başka bir koruma-tarih/işe yarıyor! – Antony

İlgili konular