Git klonu - ayna nasıl güncellenir?


144

Canlı bir site (ki çıplak git git deposu olan) yansıtmak için git deposu oluşturdum:

git clone --mirror ssh://user@example.com/path/to/repo

Şimdi, bu ayna klonunu uzak kaynağındaki tüm değişikliklerle güncel tutmak için hangi komut veya komutları kullanmalıyım?

Her şeyi güncel tutmak istiyorum: taahhütler, referanslar, kancalar, şubeler vb.

Teşekkürler!

Yanıtlar:


213

Aynada yürütmeniz gereken komut budur:

git remote update

@Magnus Skog: Harika. Teşekkürler! Hepsi bu mu? Başka bir komuta ihtiyacım var git fetchmı? Yoksa git remote updatetek başına hepsini yapacak mı?
J. Bruni

11
Git getirme farkının ne olduğunu bilmek istiyorum.
Thorbjørn Ravn Andersen

1
@ Thorbjörn (İsveççe ö :) ile ilgilisiniz): Git getirme sadece deponuzu uzaktan kumanda ile uzaktan referanslarla günceller. Bu komut günceller herşeyi aynalı depo üzerinde.
ralphtheninja

4
İşte daha fazlasını açıklayan iyi bir cevap: stackoverflow.com/questions/3959924/…
ralphtheninja

16
'git remote update --prune' tüm bunları yapar, ancak orijinal depodan kaldırıldığında dalları kaldırır.
teeks99

8

Taahhütler, refler, şubeler ve " et cetera " ile ilgili olarak Magnus yanıtı çalışır ( git remote update).

Ama ne yazık ki istediğim gibi clone/ ayna / update kanca için bir yolu yoktur ...

Kancaları klonlama / yansıtma hakkında bu çok ilginç ipliği buldum:

http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread

Öğrendim:

  • Kancalar havuz içeriğinin bir parçası olarak kabul edilmez.

  • .git/descriptionKlasör gibi, kancalar gibi klonlanmayan daha fazla veri var .

  • Görünen varsayılan kanca hooksdir geliyorTEMPLATE_DIR

  • templateGit'te bu ilginç özellik var.

Yani, ya bu "kancaları bir şey klonla" ya görmezden gelebilir ya da rsyncbenim ayna (sadece diğer klonlar için yedekleme + kaynak) amaçları göz önüne alındığında, bir strateji için gidebiliriz .

Şey ... Kancaların klonlanmasını unutacağım ve git remote updateyola devam edeceğim .

  • Sehe, sadece "kancaların" clone/ updatesüreçleri tarafından yönetilmediğini , aynı zamanda zıvanaların, rerere vb rsync. Bu benim durumumda gerçekten gerekli olmadığından (kancalar, saklamaklar vb.Gibi param yok), dediğim gibi, buna bağlı kalacağım remote update.

Teşekkürler! Kendi "git-fu" biraz geliştirildi ... :-)


5

Buraya bakın: Git sonraki klonlardaki tüm dalları klonlamıyor mu?

Bunun yerine şubeleri çekerek bunu gerçekten istiyorsanız push --mirror, buraya bir göz atabilirsiniz:

git bare deposundaki "fetch --all" yerel şubeleri uzak olanlarla senkronize etmiyor

Bu cevap, bunu nispeten kolay bir şekilde nasıl gerçekleştireceğiniz konusunda ayrıntılı adımlar sağlar:


1
pushbenim için bir seçenek değil çünkü alıcı tarafta (klonun olduğu yerden) yapmam gerekiyor; pullaynı zamanda bir seçenek değildir çünkü bir ayna deposu çıplak bir havuzdur (çalışma ağacı yok, dolayısıyla "çekme" yok) - git remote updategerçekten hepsi öyle görünüyor (referanslı cevaptan çok daha kolay) ... Her neyse, teşekkürler! Kesinlikle bağlantılı sorular / cevaplarda değerli bilgiler vardır.
J. Bruni

1
Tamam, her zamanki gibi olduğu gibi çekmek istedim. İtme ve çekme teknolojisi. Saçma sapan 'istemcideki uzaktan kumandayı verileri aktif olarak al' dışında başka bir kelime yok, git veya DVCS sistemlerine anlamı olan bir kelimeyi kopyalamıyor :) İkinci bağlantı istediğiniz detayları sağlayacaktır. Not, yani 'git uzaktan güncelleme' yok değil aslında ekstra bir işlem olmadan 'ayna' statüsünü korumak orada belirtilen
sehe

1
hmm ... özür dilerim (HTH) - Görünüşe göre "mutlak" bir ayna orijinal repo klasörünün basit bir "rsync" yoluyla daha kolay elde gibi görünüyor ... istediğim değil, ama .. Ben sadece bazı testler yaptım ... ve hiçbir şey kancaları kopyalamak gibi görünmüyor - özellikle ilgilendiğim ...
J. Bruni

1
FYI, bu aynanın amaçları sadece şunlardır: 1) orijinal repo sunucusundaki veriler kaybolursa geri yükleyebileceğim tam yedekleme; 2) orijinal kaynak repo herhangi bir erişim olmadan, başkalarının klonlamak ve yerel bir çalışma repo alabilirsiniz nerede bir yerde
J. Bruni

1
Kancalar ve her şey istiyorsanız, gitosis (iyi hatırlamıyorum) ihtiyacınız olan şeye sahip olabilir, ama ben rsyncbu durumda devam edeceğim . Ayrıca, saklamak hakkında unuttuğunuzu varsayıyorum ( buraya bakın ) ve bilgileri de tekrar verin ...?
sehe
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.