2010-06-01 19 views
65

Tüm projelerim için SVN kullanıyorum. Bazen proje B, A projesinden bir kopya olarak kaynaklanır. A projesi genel bir değişiklik olduğunda, B dizininde svn merge A kullanabilir ve bu değişiklikleri birleştirir.git farklı depoları birleştirir misiniz?

Şimdi, git'i kullanmak istedim. Tüm projelerimi aynı depoda bulundurmayı sevmiyorum çünkü o zaman her şeyi klonlamam gerekiyor ve SVN gibi bir proje seçemiyorum. Ancak her proje için bir havuza sahip olmak, SVN ile daha önce yaptığım gibi aynısını yapmaktan nasıl vazgeçebilirim?

soru şudur: Gerçekten hepsi tek orijinal projeye ilgili olduğunu birkaç alt projeler istiyorsanız bunu yapılandırmak ve senkronize halde tutmak için en iyi yolu nedir? Ve ayrıca iki projeyi, proj1 ve proj2 ve proj2 içine proj1 değişikliklerini birleştirmek istiyorsanız ayrı ayrı

+1

Muhtemelen git-submodule (http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html) 'ye bir göz atmanız daha iyi olur. – Cascabel

+0

@Jefromi ancak kaynak dosyalar temel olarak aynı geçmişten geliyor, bu iki dosyanın kopyası var mı? Bence submodule, ayrı dosyalar (birleştirme değil) olarak eklediğiniz harici kütüphaneleri takip etmek için daha fazla mıdır? – baloo

+0

Boşver, B'nin A'nın bir kopyası olduğunu söylemediğini anlamadım. "Sorunun" olduğunu okuyorsun, "alt projelerin ... orijinal bir projeyle ilgili ... senkronize olduğunu" söyledim. Bu orijinal projenin parçalarını çıkarmak, ancak meta projede senkronize tutmak. – Cascabel

cevap

113

, böyle yapardı onları kontrol edebilmek istiyorum:

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

Bunun SVN ile yaptığınız şeyle aynı şeyi yaptığına inanıyorum.

+0

Ama değişiklik # 1 parçasını birleştirerek, bu şekilde # 1 değişimini birleştirdik. Doğru hatırladığımda, her değişiklik yapıldığında her değişiklik için tüm değişiklikleri (ve çakışmaları düzeltmek) yeniden birleştirmem gerekti. Bu, SVN-yolu – baloo

+0

olmadı Elbette, birleştirme her zamanki gibi çalışır. Tüm değişiklikleri "düzeltmek" zorunda değilsiniz. Bu, uzak bir sunucuyla kullanacağınız olağan birleştirme işleminden başka bir şey değildir. –

+0

Uzaktan kumandam yoksa ne olur? Aynı şeyi yapmak istiyorum (projB'yi projB'ye dahil et) ama sadece uzaktan kumandasız çalışıyorum. –

İlgili konular