Git başka bir depodan çek


101

Aradım bir havuz var Genericjenerik uygulamadır. Onu Acme, sadece depolanmış uygulama Genericdeposu üzerine inşa edilen ve Acme Co markasını ekleyen adlı bir depoya çatalladım.

İçindeki temel işlevde değişiklik yaparsam Generic, Acmedepoyu, içindeki temel işlevde yaptığım en son değişikliklerle güncellemek istiyorum Generic. Bunu nasıl yaparım?

Anlayabildiğim kadarıyla, esas olarak bir yukarı akış havuzunda yapılan değişiklikleri mevcut çatala birleştirmeye çalışıyorum.

Eğer bir şey ifade ediyorsa, bunu yapmaya çalışıyorum çünkü daha sonra üzerine geliştirdiğim ve bireysel müşteriler için markalandırdığım genel bir uygulamaya sahibim ( Acmebu örnekte olduğu gibi ). Bunu yapmanın daha temiz bir yolu varsa, bana bildirin.

Yanıtlar:


141

Deponuza aşağıdaki komutu verin Acme. Bu adlı yeni uzak depo ekler upstreambu noktaları Genericrepo.

git remote add upstream https://location/of/generic.git

Ardından Generic, geçerli dalda yapılan değişiklikleri Acmeaşağıdaki komutla birleştirebilirsiniz:

git pull upstream

Yalnızca değişiklikleri otomatik olarak birleştirmeden indirmesini istiyorsanız, git fetchyerine kullanın git pull.

Bu arşive göndermeyi devre dışı bırakmak istiyorsanız, itme URL'sini geçersiz bir URL'ye ayarlayın.

git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP"

Git şimdi size bir depoyu bulamayacağınız upstreamkonusunda haykıracak (ve Rickroll için üzgünüm, ama aklıma ilk gelen rastgele diziydi).


6
Mükemmel, teşekkürler. Bir şey daha var: Bu uzaktan kumandayı salt okunur yapmamın bir yolu var mı, böylece yanlışlıkla onu zorlamam?
Libbux

1
Cevap vermeye başladım ama görüyorum ki McLovin cevabını bunu içerecek şekilde çoktan düzenledi.
Frankie Simon

4
2.9'dan beri, --allow-unrelated-histories bayrağını belirtmeniz gerekecek. Bkz stackoverflow.com/a/37938036/3799847
sfinks_29

6
git pull --allow-unrelated-histories upstream master
Yayınlamam

Bunu denedim ama git pull upstreamsadece takılıyorum ... herhangi bir fikriniz var mı?
Paulo Carvalho

14

Belirli bir şubeyi farklı bir depodan çekmek için aşağıdaki git komutunu kullanabilirsiniz.

git pull <git_url> <branch> --allow-unrelated-histories
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.