git fetch ile git pull arasındaki fark nedir?
Cevap
git fetch, uzak depodaki (remote) yeni commit'leri indirir ama çalışma dalınıza dokunmaz; git pull ise fetch + merge (veya ayarlıysa rebase) yapar, yani değişiklikleri doğrudan mevcut dalınıza birleştirir.
git fetch origin
git log --oneline main..origin/main # uzakta gelen yeni commit'leri incele
git diff main origin/main # neler değişmiş?
git merge origin/main # hazır olunca birleştir
git pull # fetch + merge tek adımda
git pull --rebase # fetch + rebase: gereksiz merge commit'i oluşmaz| git fetch | git pull | |
|---|---|---|
| Uzak commit'leri indirir | Evet | Evet |
| Yerel dalı değiştirir | Hayır | Evet |
| Conflict çıkabilir | Hayır | Evet |
| Güvenlik | İnceleyip sonra karar verirsiniz | Doğrudan birleştirir |
Pratik öneriler
- Paylaşılan bir dalda gereksiz "Merge branch 'main' of ..." commit'lerinden kaçınmak için
git config --global pull.rebase trueveya en azındanpull.ff onlyayarı yaygındır. git fetch --pruneuzakta silinmiş dalların yerel referanslarını temizler.origin/main, uzak dalın son fetch anındaki yerel kopyasıdır; fetch yapmadan güncellenmez.
İlgili Git soruları
- git merge ile git rebase arasındaki fark nedir?
- git reset ile git revert arasındaki fark nedir?
- İyi bir code review nasıl yapılır? .gitignore'a neler eklenmelidir?
- Interactive rebase ile commit'leri nasıl düzenler ve squash edersiniz?
- git cherry-pick ve git stash ne işe yarar? Hangi durumlarda kullanılır?
- Merge conflict nedir ve nasıl çözülür?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.