Git deposunu başka bir deponun dalına birleştir


122

Repo Foo ve repo Bar verildi. Bar'ı Foo ile birleştirmek istiyorum, ancak yalnızca adı verilen ayrı bir dalda baz.

git checkout -b baz <= Bar deposunu buraya koyun.

Yanıtlar:


232

Depoyu bir dalda birleştiremezsiniz . Başka bir depodan bir dalı yerel deponuzdaki bir şubeye birleştirebilirsiniz . İki deponuz olduğunu ve her ikisinin de geçerli dizininizde yer aldığını varsayarsak :foobar

$ ls
foo bar

Depoya değiştirin foo:

$ cd foo

barDepoyu uzaktan kumanda olarak ekleyin ve getirin:

$ git remote add bar ../bar
$ git remote update

Yeni bir şube oluşturma baziçinde foogeçerli dalıdır neyse dayalı depo:

$ git checkout -b baz

Şube Birleştirme somebranchgelen barakım dalı haline depo:

$ git merge --allow-unrelated-histories bar/somebranch

( --allow-unrelated-histories2.9 sürümünden önce gerekli değildir)


21
git 2.9'dan beri muhtemelen --allow-unrelated-historiesgit merge komutuna eklemeniz gerekecek .
Drasill


10
Ne yaptığım hakkında hiçbir fikrim yok ve bunu foo / bar yer tutucularla gerçekten okuyamıyorum. Herhangi biri bunu gerçek gerçek hayat örnekleriyle düzenleyebilir mi (uygun olduğunda bağlantılar vb.)?
rien333

Ooh, bu harika. Onu bir alt dizine birleştirmeyi tercih ederim. O kadar farklı olamaz, değil mi? Bu adımın eklenmesini tercih ederim.
macetw

1
Tonlarca birleştirme çatışması yaşıyorum. Her neyse, yeni bir şubeye girmeye zorlayabilir misin?
nomadoda

41

"Gerçek hayat" komutlarıyla güncellendi:

Depo dizininizden başlayın, çalışma kopyanızın temiz olduğundan emin olun (hiçbir dosya değiştirilmez, eklenmez veya kaldırılmaz).


Yeni bir şube oluşturun:

git checkout -b <my-branch>

İkincil uzaktan kumandayı ekleyin, ardından getirin:

git remote add <repo-name> git@github.com:xxx/<repo-name>.git
git remote update

Mevcut şubenizde şubelerinden birini birleştirin:

git merge <repo-name>/<their-branch>


Hangisini <their-branch>istediğini bilmiyorsan , o zaman gitmaster

Tüm uzak değişiklikleri kabul etmek ve çakışmalardan kaçınmak istediğinizden eminseniz ( kendinizin üzerine yazın ) , son adımda -X theirsseçenek olarak belirtebilirsiniz git merge.

Bir alt dizine eklemek istiyorsanız, muhtemelen git alt modüllerini kullanmalısınız.


3

Larsks'taki kılavuzu kullanarak bunu SourceTree kullanarak yapabildim.

  1. Hedef depoda bir şube oluşturuldu
  2. Kaynak depoyu, Ayarlar düğmesine basıp kaynak depoyu ekleyerek uzaktan kumanda olarak eklendi.
  3. Her iki depodaki şubeler artık şube listesinde gösteriliyor. Kaynak depodan bir dalı yeni hedef depomun dalına birleştirmek için birleştirme aracını kullandım.
  4. SourceTree veya IDE'mi kullanarak herhangi bir çatışmayı çözdüm
  5. Şubemdeki değişiklikleri işle.
  6. Ayarlar düğmesini kullanarak kaynak depoyu uzak listeden kaldırın.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.