Eşitleme ve çoklu depo

Fetch, pull ve push

Pull

Açılır menüden seçilen üç kip: varsayılan, yalnızca fast-forward ya da rebase. Yerel değişiklikler pull'un başında otomatik olarak stash'lenir ve sonunda geri konur; böylece kirli bir ağaç sizi engellemez.

Hiçbir şeyi izlemeyen bir dal

git pull, bir fetch ve ardından bir merge demektir; merge'ün de neyin içine birleştireceğini bilmesi gerekir — dalın upstream'ini. Yerelde oluşturulmuş ya da izleme kurulmadan checkout edilmiş bir dalın böyle bir şeyi yoktur. Fetch yine de başarılı olur, güncellenen origin/* reflerinin uzun listesi akıp geçer, sonra git "There is no tracking information for the current branch" diyerek durur. Hiçbir şey çekilmedi ve hiçbir şey bozulmadı: ikinci yarının hedefi yoktu.

Gitcito bu hatayı okur ve onarımı bir düğme olarak sunar; hangisini sunacağını uzak deponun dalı zaten taşıyıp taşımadığına bakarak seçer:

Uzak depoda var Bağla ve pull yap — upstream'i <uzak>/<dal> olarak ayarlar, sonra istediğin pull'u çalıştırır. ⌘Z ile geri alınabilir; bu izlemeyi yeniden kaldırır.
Henüz orada değil Dalı push et — sıradan bir push, upstream'i yol üstünde ayarlar.

Sunulan uzak depo varsa origin, yoksa listedeki ilkidir. Hangi durumda olduğun ağdan değil, uzak izleme reflerinden okunur — yani cevap az önce çalışan fetch'i yansıtır.

Push

Force push'lar her zaman --force-with-lease kullanır — son baktığınızdan beri uzak depo hareket ettiyse reddeden güvenli varyant. Korumalı bir dala force ile push etmek onay ister (liste, depo ayarları dişlisinde).

Korumalı bir dalın force push öncesinde istediği onay

Uzak depo yok

Push, pull ve fetch bir hedefe ihtiyaç duyar. Hiçbir uzak deposu olmayan bir depo — taze bir git init, origin'i silinmiş bir klon — bu düğmelerin hiçbir şey yapmamasına, ya da boş bir fetch'in başarı sayılmasına yol açardı. Şimdi Uzak sunucu ekle açılır, bir uyarıyla: bir URL yapıştırın veya depoyu host'ta oluşturun. Eklemek, başladığınız eylemi bitirir: push geçerli dalı yayımlar, pull fetch eder sonra pull eder, fetch yalnızca fetch eder.

Arka plan otomatik fetch, çekilecek bir şey yokken sessiz kalır. Saate göre diyalog açmaz.

Birden fazla uzak depo

Push düğmesi dalın upstream'ini hedefler. Bir deponun birden fazla uzak deposu olduğunda yanındaki ok şunları da sunar:

Tek bir uzak depoya push et Tek bir uzak depo seçin — bir fork, bir mirror, bir dağıtım hedefi
N uzak deponun hepsine push et Uzak depo başına birer push, sırayla
Tüm etiketleri şuraya push et git push <remote> --tags, tüm yerel etiketler bir kerede

Aynı iki eylem, kenar çubuğunda her uzak deponun kendi satırında da durur — ki bu soru aklınıza geldiğinde genelde zaten oradasınızdır.

Bir ret, geri kalanı iptal etmez. Bir fork'a ve onun upstream'ine push etmek, tam olarak bir tarafın reddedip diğerinin yine de geçmesi gereken durumdur; bu yüzden her uzak depo ayrı ayrı rapor verir: başarılar tek bir bildirimde adlarıyla anılır, her başarısızlık ise git'in gerekçesiyle kendi bildirimini alır.

Dalın upstream'ini yalnızca listedeki ilk uzak depo belirler. Bir dalın tek bir upstream'i vardır ve en son push edilen uzak depo, onu izlemesini istediğiniz depo olmak zorunda değildir.

Her iki yol da sıradan bir push ile aynı kontrolleri çalıştırır — korumalı dal onayı ve gizli bilgi koruması. İki uzak depoya yayımlamak, riskin iki katı demektir; yarısı değil.

Üzerinde olmadığın dallar

git pull yalnızca HEAD’i oynatır; çoğu istemcinin bir dalı güncellemek için önce checkout etmeni istemesinin sebebi bu. Gitcito istemez: herhangi bir yerel dala sağ tıkla — kenar çubuğunda ya da grafikteki rozetinde — ve <dal> dalını çek ile <dal> dalını push’la karşına çıksın; ikisi de checkout edilmiş dala değil, o dala uygulanır.

<dal> dalını çek Yerel referansı upstream’ine fast-forward eder, checkout olmadan. Çalışma ağacına dokunulmaz. ⌘Z ile geri alınabilir — geri alma dalı eski yerine koyar.
<dal> dalını push’la O dalın sıradan bir push’u; araç çubuğundaki düğmeyle aynı korumalı dal ve gizli dosya kontrolleriyle.

Hiçbir şeyi izlemeyen bir dalda çekme soluklaştırılır — çekilecek yer yok. Üzerinde olduğun dalda ikisi de normal pull’a düşer; o da çalışma ağacını günceller.

Bilinmesi gereken sınır: upstream’inden ayrışmış bir dal reddedilir ve mesaj bunu söyler. Ayrışmayı uzlaştırmak merge ya da rebase demektir, ikisi de çalışma ağacı ister — yani o durum hâlâ bir checkout’a mal olur. Uzak taraf push’u reddettiğinde, üzerinde olmadığın dal için zorla push önerilir; “çek ve yeniden dene” yolu aynı sebeple önerilmez.

Fetch

Getir'in araç çubuğunda Pull'un yanında kendi düğmesi var. Her uzak depodan getirir ve budar; böylece origin/* reflerin ve tüm ileri/geri sayaçların güncel olur — dalına da çalışma ağacına da dokunmaz. Kendi işini kımıldatmadan başkalarının ne yaptığını görmek istediğinde başvuracağın düğme budur.

Ayrıca belirlediğiniz aralıkta arka planda otomatik fetch (Ayarlar → Genel) var. Getir düğmesinin üzerine gelin, yaş altında belirir — 4dk önce — bir getirme on beş dakikayı geçtiğinde kehribar rengiyle. Araç çubuğunda hiç yer kaplamaz, çünkü yalnızca düğmeye uzanırken sorulan bir soruyu yanıtlar. FETCH_HEAD'den okunur; yani terminalde çalıştırılan bir git fetch de buradakiyle aynı sayılır.

Yeniden yazılmış geçmiş bulan bir fetch bunu söyler: bir bildirim dalı adıyla anar ve satırı, tam olarak eskiden gösterdiği commit'te o zamandan beri ne değişti ekranını açan bir işaret kazanır.

Aynı anda birçok depo

  • Bir grup sekmesi kendi alt ağacının tamamını Hepsini fetch et / Hepsini pull et yapabilir.
  • Görev merkezi bunu tüm çalışma alanında yapar ve yalnızca gerçekten geride olan depoları pull edebilir.

Uzak depolar

Kenar çubuğundan tek tek uzak depo ekleyin, düzenleyin, kaldırın ve fetch edin. Dal satırları uzak depo başına varlık rozetleri taşır; böylece hangi uzak depolarda bir dalın kopyası olduğunu bir bakışta görürsünüz.

Uzak deposu yokken fetch, pull veya push aynı Uzak sunucu ekle penceresini açar; boşluğa başarıyla gitmez. Bkz. fetch, pull ve push.

Ayrıca bakınız: Görev merkezi · Hosting ve pull request'ler

Bu çeviriyi GitHub üzerinde iyileştir