Git Checkout
- Okunuşu
- git çekaut
Kısaca
git checkout başka bir branch'e ya da commit'e geçer veya dosyaları önceki sürüme döndürür; yeni Git sürümleri bu işleri git switch ve git restore'a ayırır.
git checkout ne yapar?
Yıllarca git checkout oldukça farklı iki iş yaptı. git checkout feature branch değiştirir: HEAD'i günceller ve çalışma dizininizdeki dosyaları o branch'in sürümüyle değiştirir. git checkout -b new-branch tek adımda bir branch oluşturup ona geçer. git checkout -- file.txt ise bir dosyadaki commit'lenmemiş değişikliklerinizi atar ve onu son commit'ten geri yükler.
Tek bir komut hem branch'ler arasında geçiş yapıp hem de dosyaların üzerine yazdığı için yanlışlıkla iş kaybetmek kolaydı. 2019'da yayımlanan Git 2.23 iki odaklı komut getirdi: branch değiştirmek için git switch (oluşturmak için git switch -c) ve dosyaları geri yüklemek için git restore (unstage etmek için --staged). git checkout hâlâ çalışıyor, ama yeni komutlar öneriliyor.
git checkout v2.1.0 gibi belirli bir commit'i ya da etiketi checkout etmek depoyu detached HEAD durumuna sokar; bu da eski kodu incelemek ya da bir sürüm derlemek için işe yarar. Commit'lenmemiş değişikliklerin üzerine yazılacaksa Git branch değiştirmeyi reddeder; onları commit'leyebilir, stash'leyebilir ya da çakışmıyorlarsa beraberinizde taşıyabilirsiniz.
Sık yapılan bir yanlış, checkout'un bir şey indirdiğini düşünmektir. Yalnızca yerel deponuzda zaten olanlarla çalışır; bir sunucudan yeni branch'ler almak için önce git fetch çalıştırın. Ayrıca bir dosyayı geri yüklemenin commit'lenmemiş değişiklikleri kalıcı olarak attığını unutmayın, çünkü Git onları hiç kaydetmemiştir.
Önemli noktalar
- git checkout branch değiştirir ya da dosyaları geri yükler.
- git checkout -b bir branch oluşturup ona geçer.
- Git 2.23 onu git switch ve git restore olarak ikiye ayırdı.
- Bir commit'i ya da etiketi checkout etmek detached HEAD'e yol açar.
- Bir dosyayı geri yüklemek commit'lenmemiş değişiklikleri kalıcı olarak atar.
Örnek
# Switch branches
git checkout feature → git switch feature
git checkout -b fix-login → git switch -c fix-login
# Discard uncommitted changes to a file
git checkout -- app.js → git restore app.js
# Unstage a file but keep the changes
git reset HEAD app.js → git restore --staged app.js
# Look at an old release (detached HEAD)
git switch --detach v2.1.0Sık sorulan sorular
git checkout ile git switch arasındaki fark nedir?
git switch yalnızca branch değiştirir, git checkout ise dosyaları da geri yükleyebilir. Git 2.23'te eklenen git switch, günlük branch değişiklikleri için daha açık ve güvenlidir.
Yeni bir branch oluşturup ona nasıl geçerim?
git switch -c branch-adı ya da daha eski git checkout -b branch-adı komutunu kullanın. İkisi de branch'i mevcut commit'te oluşturur ve ona geçer.
Git neden başka bir branch'e geçmeyi reddediyor?
Çünkü diğer branch'in dosyalarının üzerine yazacağı commit'lenmemiş değişiklikleriniz var. Önce onları commit'leyin, git stash ile saklayın ya da atın.
İlgili sayfalar
- BranchSürüm Kontrolü, s. 2Git'te branch, bir özellik ya da düzeltme üzerinde, birleştirene kadar ana kodu etkilemeden çalışmanızı sağlayan bağımsız bir geliştirme hattıdır.
- HEADSürüm Kontrolü, s. 27HEAD, Git'te checkout edilmiş olanı, normalde bulunduğunuz branch'i gösteren işaretçidir; o branch da son commit'ini gösterir, yeni commit'ler oraya eklenir.
- Detached HEADSürüm Kontrolü, s. 7Detached HEAD, bir branch yerine belirli bir commit'i checkout ettiğiniz ve yaptığınız yeni commit'lerin hiçbir branch'e ait olmadığı bir Git durumudur.
- Git StashSürüm Kontrolü, s. 22Git stash, commit edilmemiş değişiklikleri geçici olarak saklayıp çalışma dizinini temizleyen komuttur; başka işe geçip çalışmanıza sonra dönmenizi sağlar.
- Git ResetSürüm Kontrolü, s. 20Git reset, mevcut branch'i daha eski bir commit'e geri taşıyan ve moduna göre staging area'yı ile dosyalarınızı da sıfırlayabilen bir Git komutudur.
- GitSürüm Kontrolü, s. 10Git, dosyalardaki değişiklikleri zamanla izleyen ücretsiz, açık kaynaklı dağıtık sürüm kontrol sistemidir; iş birliğini ve hataları geri almayı kolaylaştırır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin