Git Pull Force - Git ile Yerel Değişikliklerin Üzerine Yazma
Firefox ile kullandığım bir tema var Firefox Gnome Theme adında ve bu temayı ara ara git pull komutu ile uzak depodan güncelliyorum son değişikliklere sahip olmak için. Sorun şu ki bu tema orjinal halinden bir miktar uzaklaştı çünkü yerelde yaptığım kendi değişikliklerim var. Haliye bunu güncellerken git "Please, commit your changes or stash them before you can merge. (Birleştirme yapabilmek için değişikliklerinizi işleyin ya da zulalayın)" şeklinde bir uyarı veriyor.
Daha önce de bir çok kez bu sorunla karşılaştım fakat öğrenmek yerine uzun yoldan sorunu çözmeye kalkışmıştım her seferinde ama artık yeter. Meğer iş oldukça basitmiş.
Önümüzde bir kaç seçenek var;
- Yerelde yaptığımız değişiklikleri önemsemeyip direkt üzerine yazabiliriz.
- Yerelde yaptığımız değişiklikleri tutup uzak depodaki değişiklikleri çektikten sonra kendi değişikliklerimizi üzerine ekleyebiliriz.
- Uzak depodaki değişiklikleri indirebiliriz fakat uygulamayabiliriz.
Yerel Değişiklikler Önemli Değilse
Bu durumda yerelde yaptığımız tüm değişiklikleri sıfırlayıp dalı ilk haline çevirebiliriz. Böylelikle git merge komutunu sorunsuz bir şekilde çalıştırabiliriz.
Eğer her seferinde dal adını yazmak istemiyorsak geçerli dalı işaret eden @{u} kısayolunu kullanabiliriz.
Yerel Değişiklikler Önemliyse
Yaptığımız değişiklikler önemliyse iki seçeneğimiz var commit ve stash; yani ya değişiklikleri işleyeceğiz ya da zulalayacağız.
Zulalamak, değişiklikleri bir süreliğine rafa kaldırmak anlamına geliyor.
git stash komutu değişikliklerimizi geçici süreliğine kaydedip uzaklaştırmak için kullanılıyor. Birleştirme işlemini yaptıktan sonra da git stash pop ile yaptığımız değişikleri tekrar ekliyoruz ve geçici olarak yaptığımız kaydı da silmiş oluyoruz.
Sadece Uzaktaki Değişiklikleri İndirmek İstiyorsanız
Bu son seçeneğe hiçbir zaman ihtiyacım olur mu bilmiyorum. Bunu daha çok karışık bir düzenleme işlemi içindeysek ve sadece uzaktaki değişiklikler ile mevcut değişiklikler arasındaki farklılıkları görmek için git diff komutunu çalıştırmak istediğimizde kullanıyoruz (öyle diyorlar). Yani uzaktaki son durum elimizin altında oluyor fakat yerele bir etkisi olmuyor.
Bunun için tek ihtiyacımız olan git fetch --all ve eğer uzakta bazı dallar silinmişse ve yerelde de silinsin istiyorsanız git fetch --all --prune komutunu kullanabilirsiniz.