Uzak dalları izlemek için mevcut git dallarını alma


81

Git ile çalışırken her zamanki iş akışım şöyle:

  1. yerel bir depo oluştur
  2. o arşivde biraz iş yapın, dosya ekleyin / değiştirin vb.
  3. arşiv için merkezi bir uzak konum istediğime karar ver ve bir tane oluştur
  4. yerel depomdaki tüm işlemleri bu yeni uzak depoya gönder

Ancak şimdi, yapabilmek istiyorum pushvepull bu uzak deposundan ben iterek veya gelen çekiyorum yeri belirtmek zorunda kalmadan; Yerel yöneticimin uzak ana bilgisayarı izlemesini istiyorum.

Bunu yapmanın doğru yolu benim için net değil ve gerçekten birden fazla komut olmamasına rağmen bunu belgelerden belirleyemedim.

Depo başına yalnızca bir kez yapılan bir şey olduğu için, genel olarak iki basit ama karmaşık çözümden birini kullandım:

  1. git cloneyeni bir yerel depo yapmak için kullanılır ve eskisini siler. Git klonlamadan sonra, yeni depo orijini takip edecek şekilde ayarlanır.
  2. ana iz orijini yapmak için manuel olarak düzenlenmiş .git / config.

Sanırım bir komut çalıştırabilmeliyim, muhtemelen git remotemevcut bir depoyu ana izlemeye sahip bir uzak ana bilgisayara sahip olacak şekilde kurabilirim . Biri bana bu komutun ne olduğunu söyleyebilir mi?


Aslında daha önce benzer bir sorunun sorulduğu ortaya çıktı: stackoverflow.com/questions/312055/…
SpoonMeiser

Git version> = 1.7.0.0 için bunu tek bir komutla yapabilirsiniz, burada açıklanmıştır .
KiRPiCH

4
Bu aslında
şunun

Yanıtlar:


156

Yukarı akış argümanını kullanın:

git branch --set-upstream local-branch-name origin/remote-branch-name

Yukarıdaki komutu çalıştırmak .git / config dosyanızı doğru bir şekilde günceller ve hatta bu çıktıyla doğrulanır:

"Dal yerel-şube-adı, uzak dal uzak-dal-adını başlangıç ​​noktasından izlemek için ayarlandı."

DÜZENLEME: As Martijn söyledi: "In versiyonu Git v1.8.0, --set-yukarı kullanımdan kaldırıldı Kullanım yerine-giriş---set."

git branch --set-upstream-to local-branch-name origin/remote-branch-name

Bkz bu fazla bilgi için.


18
Git v1.8.0 sürümünde --set-upstreamkullanımdan kaldırılmıştır. --set-upstream-toBunun yerine kullanın .
Martijn

1
git remote show <remote>Yerel şubeleriniz tarafından hangi şubelerin izlendiğini görmek için kullanın
naitsirch

1
Önerilen bu düzenleme onaylanmamalıydı, cevabı temelden değiştirdi (ve yeni seçeneğe yönelik argümanlar tersine çevrildiği için yanlış bir durumda bıraktı). Orijinal gönderen cevabını güncellemek isteyip istemediğine karar versin.

1
Ayrıca şubeyi tekrar itebilirsingit push -u
mattr-

set upstreamEşlemeleri gerçekten herhangi bir kodu zorlamadan ayarlamıyor mu ? push, eşlemeler oluşturmak için sizi kodu itmeye zorlar. Belki henüz kodunuz yok, ancak bir eşleme oluşturmak mı istiyorsunuz?
user20358

19

git help remotebilmeniz gerekenleri size göstermelidir. Bence senin istediğin

git remote add [remote-name] [remote-url]

# Set a local branch to follow the remote
git config branch.[branch-name].remote [remote-name]

# Set it to automatically merge with a specific remote branch when you pull
git config branch.[branch-name].merge [remote-master]

Bunları ayarlamak için .git / config'i manuel olarak da düzenleyebilirsiniz.


Diğer bir seçenek, merkezi deponuzu yapmak, ardından çalışma dizininizi silmek ve merkezi depodan klonlayarak yeniden oluşturmaktır. .Git / config'i düzenlemek daha bilgilendirici olacaktır.
William Pursell

Merkezi depoyu klonlamak ve .git / config'i düzenlemek, sorumda daha önce bahsettiğim iki seçenek.
SpoonMeiser

8

Uzak bir dalı izlemek için yeni bir yerel şube oluşturmak istiyorsanız bunu da kullanabilirsiniz:

git checkout --track -b [branch_name] --track origin[or other remote name]/[remote_branch_name] 

hatta daha iyisi:

git checkout -t origin/branch_name

git checkout --track -b şube adı kaynak şube adı ölümcül: git checkout: güncelleme yolları, anahtarlama dalları ile uyumsuz. Kaydetme olarak çözülemeyen 'kaynak / şube adı'nı kontrol etmeyi düşündünüz mü?
edebill

6

Git'in daha yeni sürümlerinde kullanabilirsiniz

git branch --track origin/branch_name

4
Bu gönderi, çok kısa / tek kodlu olduğu için otomatik olarak düşük kaliteli olarak işaretleniyor. Sorunu nasıl çözdüğünü açıklamak için biraz metin ekleyerek genişletebilir misiniz?
gung - Reinstate Monica

Bu en doğru cevap! Yukarıdakilerin tümü yanlış değil veya artık desteklenmiyorgit branch --set-upstream BRANCH fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
GTodorov

3

The --set-upstream flag is deprecated and will be removed.

git branch master --set-upstream-to myupstream/master


1

Üç yıl ileri sar (orada ne yaptığıma bakın :-)), Git Bash'i kullanarak izlenmeyen bir dalı çekmeye çalıştım ve aldım

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> develop

Aşağıdakiler ihtiyacım olanı elde etti:

$ git branch --set-upstream-to=origin/develop develop Branch 'develop' set up to track remote branch 'develop' from 'origin'.


-1

Bu komutu kullanın:

git clone [<options>] [--] <repo> [<dir>]

Merhaba, soruyu yeniden okumak isteyebilirsiniz - depoyu tekrar klonlamaktan bahsediyor, ancak soru yerel deponun ilk olarak ne zaman oluşturulduğu ve başlangıçta uzaktan kumandayı takip etmediği ile ilgili.
SpoonMeiser
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.