2010-01-20 10 views
7

Bazı kökenlerden kopyaladığım yerel bir depomuz olduğunu düşünün. İntıcal klonumun başlangıcında, orijin dört dal vardı: özellik A, özellik B, özellik C ve ana. Ben featureA şube silmek kökenli değişiklikler yapmak ben bir dahaki sefere silinmesini bu konuda bir şeyler görmeyi beklediğiniz ben sorunu:Git'in uzaktan silinen uzak şubeler hakkında beni uyarmasını nasıl söylerim?

$ git pull origin

Ancak, ne olur bir şey görmüyorum olmasıdır ve ben

$ git pull origin featureA

ile belirli dalı aşağı çekin çalıştığımda aşağıdaki hatayı alıyorum: Bu tamamen inci gibi mantıklı

fatal: Couldn't find remote ref featureA
fatal: The remote end hung up unexpectedly

e şubesi aslında uzaktan kumandadan silindi, evet artık ref yok, ancak neden bu konu hakkında bilgilendirilmediğimi merak ediyorum. Ben -r için git daldan çıkışı ile birlikte git ls-uzak kullanan küçük bir kabuk programı yazdım

[remote "origin"]
fetch = +refs/heads/:refs/remotes/origin/
url = [email protected]:/data/git/perecep.git

: uzaktan kumanda için My .git/config şöyle şubeleri artık sunucuda bulunmayan uzaktan refsleri tespit et ve onları silmek istersem bana sor, ama ben burada yanlış birşeyler yapıp yapmadığımı merak ediyorum.

cevap

2

Yanlış bir şey yaptığınızı düşünmüyorum. Yerel şubeniz, varoluş için uzak şubeye bağlı değildir ve yerel şubeniz (aynı ad ve görünüşte aynı geçmişe) var olan devam etmek için uzak bir dalın silinmesi için tamamen geçerli bir durumdur. Bu, Git'te alışılmadık bir şey olarak nitelendirilecek bir şey varsa, tanımladığınız "merkezileşmiş" yaklaşımdır.

Düzenleme: Sorgusal olarak, --track ve --no-track seçeneklerine git-branch ve branch.autosetupmerge yapılandırma değişkeni ile ilgilenebilirsiniz.

+0

b kurumsal bir ortamda değilim ve bu nasıl geliştiriciler olduğu c/dizüstü bilgisayarlar ile kod paylaşmayı tercih edeceğiz (ortak bir sunucuda ortak konu dalları oluşturarak değişikliklerini işbirliğine ilerleterek). SVN'den yeni geçiş yaptığımız için bu, onların daha rahat olduğu bir şey. Benim endişem, özellik/konu entegre edildikten sonra silinen bu nitelikteki birkaç geçici şubesi oluşturduktan sonra, tüm geliştiricilerin artık yerel repolarında tonlarca uzak şube referine sahip olmalarıdır. – NewGitUser

3

Tamam, özel bir betiğe gerek yok. Ben adam sayfasından bu komutu

$ git remote prune origin

ardı tahmin: Ben Git ile daha "merkez sunucu" iş akışı takip ediyorum

 
    prune 
      Deletes all stale tracking branches under . These stale branches 
      have already been removed from the remote repository referenced by 
      , but are still locally available in "remotes/". 

      With --dry-run option, report what branches will be pruned, but do 
      no(sic) actually prune them. 
+0

Uzaktan kumandayı güncellediğinizde bu otomatik olarak büyülü yapan herhangi bir ayar var mı? – xenoterracide