Revert (Ders 5)
Şimdiye kadar git reposu oluşturmayı ve yaptığımız değişiklikleri kaydetmeyi öğrendik. Bu değişiklikleri geri alamayacaksak, projenin eski hallerine dönemeyeceksek yedeklemenin ne anlamı var değil mi? İşte bu derste yapılan değişiklikleri geri almayı öğreneceğiz.
Hatırlarsanız Github Desktop programını yülklerken bunun oldukça basit bir program olduğundan bahsetmiştim. Bu bastitlik şimdiye kadar bize bir artı olarak geri döndü, çünkü şimdiye kadarki kısımlar görece kolay bir şekilde anlaşıldı. Ancak bu dersimizde basit olmasının negatif taraflarını da göreceğiz.
Projenin içine yeni bir dosya oluşturarak başlayalım. Varsayalım ki oyun stüdyomuzun yöneticisi gelip daha fazla para kazanmak istediğini ve oyuna mikro ödemeler eklememiz gerektiğini söyledi. İçimizden gelmese de hemen oturup işe koyulduk. Satacağımız bütün eşyaların isimlerini bir dosyada tutmaya karar verdik. Dosyamızın adı “Esyalar.txt”, içeriği de şu şekilde olsun:
- Mermi
- Can
- Kalkan
Dosyayı proje klasörünün içine kaydedin ve Github Desktop’ı açın. Changes sekmesine dikkat ederseniz Esyalar.txt dosyasını göreceksiniz. Buraya kadar yeni bir şey yok. Bir önceki derste de bunları yapmıştık. Şimdi bu yeni eşyaları oyundaki yapay zekanın da kullanmasını istiyoruz. AI.txt dosyasında değişiklik yapalım:
Görev:
- Evi ara
- Karşına çıkan mafya adamlarını öldür
- Can kullan
- Aylin'i ara
- Kalkanı yerden al
- Evden çık
Görünen o ki oyunumuzun ölçeği çok arttı ve karakterlerden birisini silmemiz gerekiyor. Karakterler.txt dosyasını açıp Turgut karakterini silelim:
Fatih
Aylin
Refik
Fuat
Diyelim ki tam bu noktada stüdyonun yöneticisi vizyonsuz olduğu gerekçesi ile işten atıldı ve yerine yeni bir yönetici geldi. Yeni yönetici bize güvendi te projeyi tamamen bize teslim etti. Mikro ödeme işini sevmediğimiz için ve oyunumuz zaten paralı olduğu için onları projeden çıkarmaya karar verdik. Tabi bu durumda yapay zeka da bu eşyaları kullanamayacak, yani AI.txt dosyasını da eski haline getirmemiz lazım. Fakat Turgut karakterini en başından beri sevmemiştik zaten. Onu geri eklemesek de olur. Github Desktop’ı açalım. Changes kısmında üç dosya göreceğiz, Esyalar.txt, AI.txt ve Karakterler.txt.
Esyalar.txt dosyasında değişik bir şey yok. Kendisini seçtiğimiz zaman, aynı bir önceki derste olduğu gibi sağ tarafta içeriğini göreceğiz.
AI.txt dosyası ise biraz farklı. Dikkat ederseniz yanında artı nokta var ve seçtiğiniz taktirde sağ tarafta yeşil ile belirtilmiş sadece iki satır göreceksiniz. Fark ettiğiniz üzere bunlar yeni eklediğimiz satırlar.
Benzer şekilde Karakterler.txt dosyasında sildiğimiz satır kırmızı ile belirtiliyor.
İşe AI.txt dosyasını eski haline getirmek ile başlayalım. Bunun için üzerine sağ tıklayıp Discard Changes demeniz yeterli.
Discard Changes dedikten ve onayladıktan sonra AI.txt dosyası Github Desktop’tan kaybolacaktır. Dosya bir önceki commit’teki haline geri döndüği için Changes yani Değişiklikler klasörünün altında görünmeyecektir. Projeden dosyayı açıp kontrol ederseniz eklediğimiz iki satırın kaybolduğunu ve dosyanın eski haline geldiğini göreceksiniz:
Görev:
- Evi ara
- Karşına çıkan mafya adamlarını öldür
- Aylin'i ara
- Evden çık
Aynı işlemi Eşyalar.txt dosyasına uygularsanız dosya projeden komple silinecektir. Bunun sebebi, tahmin edebilecğeiniz gibi, bir projenin bir önceki commit’inde öyle bir dosyanın olmaması. En son elimizde sadece Karakterler.txt dosyasına yaptığımız değişiklikler kalacak. Bir önceki derste olduğu gibi commit’imizi yapalım. Yorum olarak “Turgut silindi” yazacağım. Bu commit’te sadece Karakterler.txt dosyasından Tugut’u silmişiz gibi görünüyor. Yaptığımız diğer değişiklikler hiç olmamış gibi.
Peki ya commit yaptıktan sonra bir hata yaptığımızı fark edersek ne olacak? Herhangi bir commit ile yaptğımız değişiklikleri geri almak oldukça kolay. History sekmesini açın, geriye almak istediğiniz commit’i seçin, sağ tıklayın ve Revert This Commit seçeneğine tıklayın.
İşlem bittikten hemen sonra, History sekmesinde yeni bir commit göreceksiniz: Revert “Turgut Silindi”.
Github Desktop bunu bizim için otomatik olarak yaptı. Basitliğin getirdiği ilk eksiği burada görebilirsiniz. Github Desktop kullanırken bu commit yapmadan revert etmenin şimdilik bir yolu yok gibi görünüyor. Bunun için ya farklı bir araç ya da komut satırını kullanmanız gerekiyor. Dersi basit tutmak adına şimdilik bunlardan bahsetmeyeceğim.
Github Deskotp’ın bir başka eksiği de bütün projeyi istediğimiz bir commit’e kolay bir şekilde geri döndğüremiyor olmamız. Sadece bir commit ile yapılan değişiklikleri geri alabiliyoruz.
Git oldukça gelişmiş bir sistem ve birkaç derste hepsini anlatmak mümkün değil. Hatta bol bol pratik yapmadan öğrenmek çok mümkün değil diyebilirim. Fakat tek başınıza çalışıyorsanız ve projeniz çok büyük değilse bu seviyede git bilmek büyük ölçüde yeterli olacaktır. Bir sonraki derste bir proje üzerinde birden fazla kişi nasıl çalışabilir ondan bahsedeceğim.
Filed under: Git - @ December 15, 2019 9:30 pm
Tags: Programlama, git, versiyon kontrol, proje yönetimi, revert, git revert