git switch ve restore

git switch and git restore

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

Leave a Reply

Your email address will not be published. Required fields are marked *