| by Anton | 2 comments

Commit (Ders 4)

Önceki derste proje dosyalarını ayarladık ve artık kod yazmaya hazırız. Ama yazmayacağız. Çünkü bu bir programlama dersi değil. Kod yerine düz bir text dosyasını örnek olarak kullanacağız.

Projeyi indirdiğiniz klasöre gidin, README.md dosyasının yanına yeni bir klasör oluşturun. Klasöre istediğiniz bir isimi verebilirsiniz, ben Scripts ismini vereceğim.

Yeni klasörü açın, sağ tıklayın ve yeni bir text dosyası oluşturun. Bu dosyaya da istediğiniz herhangi bir isim vermekte serbestsiniz. Ben bir yapay zeka programladığımızı hayal etmek istiyorum, onun için AI adını vereceğim. Dosyayı istediğiniz bir text editöründe açabilirsiniz. Notepad dahi işinizi görecektir. Bu aralar kişisel favorim VS Code olduğu için ben onu tercih edeceğim.

Yapay zeka tarafından kontrol edilen bir oyun karakterinin belli görevleri yerine getirmesini istediğimizi varsayalım. Bunun için şöyle bir kod yazdığımızı hayal edebiliriz:

Görev:
- Evi ara
- Karşına çıkan mafya adamlarını öldür
- Aylin'i ara
- Evden çık

Dosyayı kaydedin. Yanına yeni bir text dosyası oluşturun. Bu defa adı karakterler olsun. Burada oyundaki yer alan bütün karakter isimlerini listeleyeceğiz.

Fatih
Aylin
Refik
Turgut
Fuat

Bu dosyayı da kaydedin ve Github Desktop’ı açın. Karşınıza şuna benzer bir ekran çıkacaktır:

1 ile işaretlediğim alanda üç düğme var. Bilgisayarınızda başka git repo’su varsa Current Repository düğmesine tıklayarak aralarında geçiş yapabilirsiniz. Current Branch ve Fetch Origin düğmelerinin ne yaptığını ileriki derslerde göreceğiz.

2 numaralı bölgede değişiklik olan bütün dosyaları görebilirsiniz. AI.txt ve Karakterler.txt dosyalarını yeni oluşturduğumuz için yanlarında birer artı var. Yedeklemek istediğimiz dosyaların solundaki kutucukları işaretlemeniz gerekiyor. Şu anda iki dosyayı da yedeklemek istiyoruz, o yüzden ikisini de işaretliyoruz.

2. bölgeden seçtiğiniz dosyanın içeriğini 3 numaralı bölgede görebilirsiniz.

Gelelim Git’in ilk önemli faydasına. Bir müşteri için bir yıl boyunca bir proje üzerinde çalıştığınızı hayal edin. İşinizi garantiye almayı sevdiğiniz için her gün yedek alıyorsunuz. Günün birinde ofise müşteriniz geliyor ve projenin bir ay önceki versiyonunu istiyor. O zamandan beri elinizde yaklaşık olarak 30 yeni versiyon birikti. Hangisinin stabil olduğunu, hangisinde yeni özellikler eklediğinizi bilmeniz olanaksız. Bu yüzden her bir versiyonu tek tek açıp denemeniz gerekiyor. Keşke her versiyonda nelerin değiştini, nelerin eklendiğini özetleyen bir not olsa da bu şekilde uğraşmasanız değil mi?

İşte 4 numaralı bölge tam olarak buna yarıyor. Her versiyon için mutlaka bir not yazmanızı istiyor. Bu versiyon için notlarımızı yazalım ve commit düğmesine basalım!

Bir anda her şey kaybolur ve karşınıza şöyle bir ekran çıkarsa korkmayın, her şeyi doğru yapmışsınızdır!

Sağ taraftaki ekran kaydedilmemiş bir değişikliğin olmadığını söylüyor. Daha önceden işaretlediğim 2. bölgenin en üstüne dikkat ederseniz Changes ve History diye iki sekme göreceksiniz. Şu anda aktif olan sekme Changes sekmesi. Burası isminden de anlaşıldığı gibi, projedeki değişikliklerin listelendiği sekme. Az önce bütün değişiklikleri kaydettiğimiz için şu anda burası boş. History, yani geçmiş (ya da tam karşılığı olan tarih) sekmesine tıklarsanız iki girdi göreceksiniz:

Az önce yaptığımız bu işleme “Commit” deniyor. Commit kelimsi aşağı yukarı kendini bir şeye adamak anlamına geliyor. Buradaki kullanımı teslim etmek fiiline biraz daha yakın. Sol tarafta gördüğünüz gibi şimdiye kadar iki commit yaptık. İlki repo’yu oluştururkenki ilk commit, ikincisi ise az önce yaptığımız commit.

Sağ tarafta yine birkaç farklı bölge var. En üstte, gördüğünüz gibi yaptığımız commit’in başlığı ve özeti yer alıyor. Ortada kalan kısımda değişiklik yaptığımız dosyalar var. Herhangi bir dosyayı seçerseniz sağ tarafta yapılan değişiklikleri görebilirsiniz.

Muhtemelen şimdi git’in gücünü fark etmeye başlamışsınızdır. Bu sistem sayesinde projedeki kodun her bir satırını ve her satırdaki en ufak değişiklikleri rahatlıkla takip edebilirsiniz. Hatta herhangi bir değişikliği kimin ne zaman ve ne için yatığını görebilir ve geri alabilirsiniz.

Şimdi github sitesine girip repoyu kontrol edelim. Karşınıza şöyle bir sayfa çıkacaktır:

Dikkat ederseniz bir gariplik fark edeceksiniz. Ortada “1 Commit” diye bir ifade var. Ve dosyalar arasında yeni yaptığımız AI.txt ve Karakterler.txt dosyaları yok. “E hani commit ettiydik? Ne oldu?” diyorsanız panik yapmayın! Şimdiye kadar dosyaları sadece bilgisayarınıza kaydettik. Henüz hiçbir şeyi çevrim içi repo’ya göndermedik.

Bir önceki dersi hatırlarsanız yerel ve çevrimiçi yedeklemeden bahsetmiştim. Teknik olarak git ikisini aynı anda yapıyor. Tabi dilerseniz hiç çevrimiçi yedekleme yapmadan da projeniz üzerinde çalışabilirsiniz. Ancak birçok bedava alternatif mevcut iken çevrimiçi bir servis kullanmamak için ortada bir sebep yok.

Dediğim gibi, şimdiye kadar dosyaları sadece yerel git reposuna gönderdik. Çevrimiçi repoya göndermek istediğimizde ise “Push” komutunu kullanacağız. Bunun için sağ üstteki “Push origin” düğmesini ya da “Changes” sekmesindeki “Push origin” düğmesini kullanabilirsiniz. İkisi de tam olarak aynı işlemi yapacaktır.

Burada dikkat etmeniz gereken nokta push işleminin sadece ve sadece commit ettiğiniz değişiklikleri çevrimiçi repo’ya gönderiyor olması. Yani dosyalar üzerinde bir değişiklik yapar ve commit etmezseniz, push işlemini yapsanız dahi bu değişiklikler çevrimiçi sunucuya gönderilmeyecektir.

İşlem bittikten sonra github sayfasını yeniledikten sonra ikinci commit’in de burada olduğunu göreceksiniz.

Daha sonra bu projeyi git aracılığı ile indirip üzerinde çalışmak isterseniz veya ekibinize başka bir geliştirici katılırsa, en başta yaptığımız gibi “Git Clone” komutunu kullanarak projeyi indirebilirsiniz.

Bir soraki derste yapılan değişiklikleri nasıl geri alabileceğinizden bahsedeceğim.

2 Comments

Sami

May 25, 2020 at 1:52 pm

Gerçekten güzel bir anlatım. Ama bir sorum var. Ben Unity proje klasörümü seçsem yedeklemek için projemde herhangi bir sorun olur mu?

Anton

May 25, 2020 at 2:07 pm

Teşekkür ederim, beğenmenıze sevindim 🙂 soruyu doğru anladıysam, evet. Unity’nin proje dosyası git reposu olmalı. Yani yukarıdaki .git klasörü Asset klasörünün hemen yanında durmalı.

Leave a Reply