Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Git - Değişikliklerimizi Nasıl Geri Alırız?



  January 13, 2019    Labels:,,,,,,,,, 

Git ile bir proje üzerinde çalışırken yaptığımız değişiklikleri geri alabilir dilersek daha sonra tekrar ileri alabiliriz. Yaptığımız her değişiklik bir versiyonlama mantığı ile düşünebiliriz. Git'te yapılan her değişikliğin yani her commit'in bir id bilgisi tutulur. Bu id bilgileri ile projemizi istediğimiz commit'in olduğu andaki duruma getirebiliriz. İstersek bu değişiklikler hiç olmamış gibi tüm olanları silebiliriz, istersek sadece geri dönüp kontrol edebilir sonra tekrar ilk hale dönebiliriz. Git'te değişiklikleri geri alabilmek için üç farklı yöntem vardır. Bu yöntemlerin etkileri farklıdır ve farklı durumlarda kullanılırlar.

Revert
Bu komut, commit id ile belirttiğimiz commit'in yaptığı tüm değişiklikleri geri alacak şekilde proje dosyalarımızın üzerinde değişiklik yapar. Bu değişiklikleri daha sonra staging area'ya taşırız ve daha sonra depomuza commit ederek projemizi o ana döndürürüz. Bu işlemler projemizin tarihçesine yansır. Örnek verecek olursak bir proje oluşturduğumuzu ve commit1, commit2, commit3 mesajlarıyla üç commit yaptığımızı varsayalım. Daha sonra revert komutunu commit2'nin id si ile çalıştırdığımızı düşünürsek bu komut commit2 ile yapılan değişiklikleri geri alacak şekilde dosyalar üzerinde değişiklik yapar. Daha sonra biz bu değişiklikleri normal değişiklikler gibi commit edebiliriz. Tarihçemizi kontrol ettiğimizde(git log) şöyle bir sıra ile karşılaşırız. 

Commit1
Commit2
Commit3
Revert Commit2

Buradaki mantık değişiklikleri geri alan bir commit atılmasıdır ve tüm süreç daha sonradan tarihçede görülebilir.

Aşağıdaki gösterildiği gibi revert komutunu kullanabiliriz. Commit id yazan kısma değişikliklerini geri almak istediğimiz commit'in id bilgisini yazarız. Bu bilgiyi 'git log' komutu ile öğrenebiliriz.

git revert commitId

Reset
Bu komut projemizi, commit id ile belirttiğimiz commit olduktan sonraki hale getirir. Commit id ile belirttiğimiz commit olduktan sonra yaptığımız tüm değişiklikleri siler. Bu komutun iki farklı kullanımı vardır. Hard kullanımı ile dosyalar tamamen silinir ve tarihçe kaydı da temizlenir. Yani belirtiğimiz commit id den sonra yaptığımız tüm commit'ler sanki hiç yapılmamış gibi silinir ve tamamen temizlenir. Soft kullanımı ise hard kullanımı ile aynıdır tek farklı değişiklikleri git deposundan siler ancak local'imizden silmez. Daha sonra istersek local'den silebiliriz veya o değişiklikler üzerinde istediğimiz değişikliği yapıp tekrar commit edebiliriz.

git reset commitId --hard
git reset commitId --soft



Checkout
Bu komut, projemiz üzerinde bir zaman tünelindeymişiz gibi hareket etmemizi sağlar. Git deposuna yaptığımız her commit'in olduğu durumu bir zaman dilimi olarak düşünürsek, local'imizi istediğimiz bir zaman dilimindeki hale getirir. Bu durumdan git deposundaki proje dosyaları etkilenmez sadece biz local'imizde bir zaman tünelindeymişiz gibi zamanı geri veya ileri alabiliriz. Ayrıca bu işlem tarihçe dosyasına da yansımaz.

git checkout commitId


No comments:

Post a Comment