Ana içeriğe geç

Yan yana

Git FetchvsGit Pull

git fetch ile git pull arasındaki fark nedir?

Güncellendi 1 dk okuma6 fark

Kısaca

git fetch yeni commit'leri işinize dokunmadan indirir; git pull ise fetch yapar ve bu değişiklikleri hemen mevcut branch'inize merge ya da rebase eder.

Git Fetch

git fetch, uzak depodan yeni commit, branch ve etiketleri indirip origin/main gibi uzak izleme branch'lerini günceller; sizin branch ve dosyalarınız değişmez.

Git Fetch sayfasını oku

Git Pull

Git pull, uzak bir depodan yeni commit'leri indiren ve bunları hemen mevcut yerel branch'inize entegre eden bir Git komutudur.

Git Pull sayfasını oku

Git Fetch ve Git Pull karşılaştırması

ÖzellikGit FetchGit Pull
Commit'leri indirirEvetEvet
Branch'inizi değiştirirHayırEvet, merge ya da rebase eder
Dosyalarınızı değiştirirHayırEvet
Çakışmaya yol açabilirHayırEvet, iki taraf da değiştiyse
origin/main'i güncellerEvetEvet
Tipik kullanımBirleştirmeden önce uzaktaki değişiklikleri incelemekHızla güncel olmak

Fark, açıklamalı

İkisi de uzak bir depoyla konuşur ve henüz sizde olmayan commit'leri indirir. git fetch orada durur: neyin değiştiğini görebilmeniz için origin/main gibi referansları günceller, ama yerel branch'leriniz, staged değişiklikleriniz ve dosyalarınız tam olarak oldukları gibi kalır.

git pull, git fetch artı ikinci bir adımdır. Varsayılan olarak indirilen branch'i mevcut branch'inize merge eder ve iki tarafta da yeni commit'ler varsa bir merge commit'i oluşturur; --rebase ya da pull.rebase ayarıyla ise yerel commit'lerinizi indirilenlerin üzerine yeniden oynatır. Çakışmalar varsa pull tamamlanmadan önce onları çözersiniz.

Önce fetch yapmak size inceleme şansı verir: git log main..origin/main gelen commit'leri listeler, git diff main origin/main de değişiklikleri gösterir; sonra bilinçli olarak merge ya da rebase yaparsınız. Pull ise yalnızca güncel olmak istediğinizde ve sürpriz beklemediğinizde hızlı seçenektir; kişisel bir branch'te çoğu zaman durum budur.

Sık yapılan bir yanlış, pull her şeyi yaptığı için fetch'in anlamsız olduğunu düşünmektir. Fetch, uzak depoyu incelemenin güvenli ve salt okunur yoludur; editörlerin branch'inizin geride kaldığını göstermesi de onunla olur. pull.ff only ayarı, pull'un fast-forward dışında her şeyi reddetmesini sağlar; böylece hiçbir zaman beklenmedik bir merge oluşturmaz.

Hangisini kullanmalısınız?

Git Fetch şu durumlarda doğru seçim:

  • Birleştirmeden önce neyin değiştiğini görmek istiyorsunuz.
  • Devam eden yerel işiniz var ve sürpriz istemiyorsunuz.
  • Branch değiştirmeden bütün uzak branch'leri güncellemek istiyorsunuz.

Git Pull şu durumlarda doğru seçim:

  • Yalnızca branch'inizin uzak depoyla güncel olmasını istiyorsunuz.
  • Çakışma beklemiyorsunuz ya da çözmeye hazırsınız.
  • Branch'te tek başınıza çalışıyor ve gelen değişikliklere güveniyorsunuz.

Sık sorulan sorular

git pull, git fetch artı git merge ile aynı şey mi?

Varsayılan olarak evet. --rebase seçeneği ya da pull.rebase ayarıyla ise git fetch artı git rebase'dir.

git fetch'i her zaman çalıştırmak güvenli mi?

Evet. Yalnızca veri indirir ve uzak izleme branch'lerini günceller; branch'lerinizi ya da dosyalarınızı asla değiştirmez.

Pull'u merge ile mi, rebase ile mi kullanmalıyım?

Rebase geçmişi doğrusal tutar ve kişisel branch'lerde küçük merge commit'lerini önler. Merge ise işin tam olarak nasıl birleştirildiğini korur. Birçok ekip günlük iş için pull.rebase true ayarını kullanır.

Daha fazla

Ayarlar