Merhaba, git bünyesinde birçok komut var bazılarının görevleri birbirlerine çok yakın gibi gözüküyor. Ben de bazılarını baya karıştırdım ve bu yazıyı yazmaya karar verdim. Bu yazımda fetch ve pull komutlarının asıl görevleri nelerdir onlardan bahsedeceğim.
git fetch
Bu komut remote’daki tüm commitleri local’e çeker. Fakat çekilen commitler remote branch’lar olarak depolanır, local olarak değil. Bu sayede local’deki kodla merge etmeden önce gözden geçirme şansı verir.
git fetch <remote–repo>
remote-repo‘daki tüm commit ve dosyaları çeker.
git fetch <remote-repo > <branch>
remote-repo içerisindeki sadece belirtilen branch içerisindeki tüm commit ve dosyaları çeker.
fetch komutu, local’deki dosyaların üzerine hiçbir etkisi yoktur, sadece kim ne katkı yapmış onu görmenizi sağlar. Tabii ki dosyaları çektiğiniz kodları kendiniz merge işlemlerini de gerçekleştirebilirsiniz.
Örnek senaryo:
git fetch origin git checkout master git log origin/master git merge origin/master
git log master..origin/master komutuyla merge etmeden önce hızlıca commitleri gözden geçirebilirsiniz.
git pull
Bu komut, upstream’deki dosyaları çeker ve local’deki kodla direk birleştirir. İki kodun birleşimi şeklinde düşünülebilir:
git pull = git fetch + git merge
Bu sebeple fetch komutu bu komuttan daha güvenlidir diyebiliriz.
git pull <remote-repo>
remote-repo‘yu fetch eder ve local’deki bulunan branch ile birleştirir.
git fetch + git merge origin/<current-branch>
git pull –rebase <remote>
Merge etmek yerine rebase eder.
Örnek senaryo:
git checkout master git pull --rebase origin
Bir önceki git yazıma buradan ulaşabilirsiniz.