Kelimelere bakarak bu komutların ne işe yaradığını çoktan anlamışsınızdır diye düşünüyorum. Bu iki komut, git checkout komutunun yaptığı işleri üstlendiğinden dolayı ilk olarak checkout komutundan kısaca bahsedelim.
git checkout
: Genel olarak aktif branch’ı değiştirmeye, HEAD pointer’ı spesifik bir commit’e çekmeye ve belirlenen dosyaları restore etmeye yarar.
Örneğin:
# aktif branch'ı değiştirmek için
git checkout diger-branch
# HEAD pointer'ı değiştirmek için
git checkout 46e43e3b7ce20cf359178ca7390ad155bd42d15b
# Bir dosyayı iki sürüm önceki haline çevirmek için (git reset gibi)
git checkout diger-branch~2 Makefile
# Silinen bir dosyayı geri getirmek için
git checkout -- silinen_dosya.py
Git switch ve restore komutları ise checkout komutunun yaptığı işlemlerin birkaçını yapabilmektedir. Git kullanmayı yeni öğrenenler için bu komutlar git checkout komutuna kıyasla daha anlaşılır olacaktır.
git switch
git switch
: Branch ve commitler arasında geçiş yapmak için kullanılır. Default olarak HEAD pointer’ı değiştiremez, flag kullanmak gerekir.
Branch değiştirmeyi git checkout diger-branch
komutuyla yapabiliyorduk. Bunu switch ile şu şekilde yapabiliriz:
git switch diger-branch
Yeni bir branch create ederek geçiş yapmak için:
git switch -c diger-branch
Veya boş bir branch oluşturup geçiş yapmak için:
git switch --orphan diger-branch
HEAD pointer değiştirme işlemini de şu şekilde yapabiliriz:
git switch -d 46e43e3b7ce20cf359178ca7390ad155bd42d15b
git restore
git restore
: Verilen dosya veya dosya yolundaki tüm değişiklikleri yok saymaya veya başka bir branch’tan bir dosyayı alıp kullanmaya yarar.
Örneğin dosyada yapılan değişiklikleri yok saymak için şunları kullanabiliriz:
git restore script.py
git restore .
Başka bir branch’tan dosyayı alıp kullanmak için ise –source flag’i kullanabiliriz:
git restore --source main script.py
Kaynak:
git checkout examples
New in Git: switch and restore
git switch & git restore