Eğer yapmak istediğimiz branch (dal) değiştirmekse her iki komutta sorunsuz çalışır. Peki neden aynı görev için iki farklı komut bulunuyor?

git checkout aslında önceden daha fazla iş yapıyordu. Git 2.23'te (2019) sorumluluklarını ikiye böldüler:

  • git switch branch işlemleri
  • git restore dosya işlemleri

Yani git checkout komutunun görevleri iki farklı komuta ayrılmış oldu.

Git checkout hala çalışıyor ama önerilmiyor. Yani geriye uyumluluk korunmuş.

Git Checkout Neler Yapıyordu?

Aşağıdaki komutlardan ilk ikisi branch, son ikisi dosya işlemidir. Aynı komut ama farklı türde işler yapıyor. Git, 2.23 versiyonunda bu ayrıma gitti.

  • git checkout ozellik-login: branch'e geç
  • git checkout -b ozellik-login: oluştur ve geç
  • git checkout --dosya.txt: dosyayı son commit'ten geri al
  • git checkout abc123 --dosya.txt: dosyayı belirli commit'ten geri al

Nasıl Bölündü?

ESKİSİ YENİSİ
git checkout ozellik-login git switch ozellik-login
git checkout -b ozellik-login git switch -c ozellik-login
git checkout --dosya.txt git restore dosya.txt

Tabloda geçen git restore, dosyaları son commit'teki haline döndürür. Örneğin bir dosyada yaptığın değişikliklerden vazgeçmek istersen git restore dosya.txt komutu o dosyayı sıfırlar. Bu konuyu ayrıca ele alacağız.

Git Switch Neden Eklendi?

Git checkout çok fazla farklı görev yaptığı için yeni başlayanlar açısından kafa karıştırabiliyordu. Git switch ve git restore komutları sayesinde branch işlemleri ile dosya geri alma işlemleri birbirinden ayrılmış oldu.

Hangisini Kullanmalıyız?

Yeni projelerde git switch kullanabiliriz. Hem daha okunaklı hem daha az hata riski var.

Ama internette, dökümanlarda, eski projelerde git checkout ile karşılaşabiliriz. Git'in o eski komutlarını hala desteklediğini unutmamalı ve karşılaştığımızda tanımamızda fayda var.