Git Nedir? Temel Seviye Komutlar ile Anlatım – 1
Git (GNU(Gnu’s Not Unix) Interactive Tools), yazılım geliştirme süreçlerinde kullanılan, hız odaklı, dağıtık çalışan bir versiyon kontrol ve kaynak kod yönetim sistemidir. İlk sürümü Linux çekirdeğinin geliştirilmesinde kullanılmak üzere 2005 yılında bizzat Linus Torvalds tarafından tasarlanıp geliştirilmiş ve 2019 yılı itibari ile %70 pazar payına ulaşmıştır. Bu yazının ilk serisinde temel seviye komutlar ile Git anlatımından bahsettim.
Wiki
Git Kurulumu
Aşağıda farklı OS’lar için kurulum komutları mevcuttur. Bundan sonraki adımı macOS üzerinden devam ediyor olacağım.
macOS: brew install git
Windows: choco install git
Linux: sudo apt-get install git
Kurulum sonrasında git –version komutu ile kurulumun tamamlanıp tamamlanmadığını ve hangi versiyonda olduğuna bakıyorum.
Bu arada kurulum örnekleri için buradaki linke göz atmanızı tavsiye ederim.
Git Komutları
Örnek olması açısından hesap makinesi isimli uygulama geliştirme projemiz olsun, uygulamayı geliştirirken versiyon kontrolünü ve kaynak kod yönetimini git ile yapmak istiyorum.
Bu kısımda yapılan işlemler sırasıyla; cd komutu ile Desktop’a geçip burada mkdir komutu ile Proje adında bir klasör oluşturduk. Daha sonrasında ls ile içerisinin boş olduğunu gözlemledik. touch komutu ile hesap makinesinde kullanılacak html, js ve css dosyalarını oluşturduk tekrar ls komutu ile dosyaların oluşturulduğundan emin olduk.
Init
Proje klasöründeki dosyaları git ile takip etmek istediğimizden dolayı git init komutunu kullanarak ilişkilendirme yapıyoruz.
Bu sefer ls -a komutu ile (gizli dosyaları görmek için) .git gizli klasörünün oluşturulduğunu gözlemliyoruz.
Klasörün içeriğine baktığımızda aşağıdaki dosyaların oluştuğunu görebiliriz.
Status
Dosyalarımızı oluşturduktan sonra git status komutu ile son duruma bakalım. Aşağıda görüleceği üzere bize master branch’te çalıştığımızı, bu klasörde takip edilmeyen 3 adet dosyamızın olduğunu ve henüz commit edilmediğini bize söylüyor. Dosyalardaki değişikliklerimizi takip edebilmemiz ve versiyonlarını saklamamız için öncelikle dosyaları stage’e (sahneye almak) almamız gerekecektir.
Add
Dosyaları sahneye almak için git add “dosyaAdi” komutunu tek tek kullanabileceğimiz gibi git add . komutu ile projedeki bütün dosyaları sahneye alabiliriz. Daha sonrasında git status ile dosyaların kırmızı yerine yeşil ile gösterildiğini görebiliriz.
Commit
Artık bu işlemden sonra commit yapabilir duruma geliyoruz. Projemize ait ilk snapshot’umuzu yani fotografımızı çekebilir ve takip durumuna alabiliriz.. Bunun için git commit -m “projenin ilk calisir hali” komutunu kullanıyoruz. Artık dosyalar üzerinde herhangi bir değişiklik olduğunda bununla ilgili bize bilgi dönecektir.
git status komutunu tekrardan çalıştırdığımızda artık bize commit edilecek bir şey olmadığını söylüyor, çünkü herhangi bir değişiklik yok.
Log
git log komutu ile yapmış olduğumuz commit işlemine unique id tanımlıyor ve mesajımızı bu alanda gösteriyor.
Oluşturmuş olduğumuz dosyaların içi boştu, hesap makinesi için oluşturmuş olduğumuz dosyalarda değişiklikler yaptık. (html, css, js)
Yapılan değişiklikler sonrasında projemize ait ön izleme
Sonrasında Proje klasöründe terminal ile git status komutu çalıştırdığımızda
Bize ilgili dosyalar üzerinde değişiklikler (modified) olduğunu belirtiyor. Yine daha önceden bahsettiğim üzere git add . komutu ile dosyaların güncellenmiş halini sahneye (stage) alıyorum.
Görüleceği üzere yine dosyalarımız yeşil ile gösterilmeye başlandı. Stage’de bulunan dosyalarımızın ilk hali ile şimdiki hali arasında ne gibi değişiklikler oldu bunu öğrenmek için git diff – -stage komutu kullanılabileceği gibi henüz stage’e almamış olduğumuz dosyalardaki değişiklikleri görebilmek için git diff komutu kullanılabilir.
Tekrar son değişikliklerimizi commit ( git commit -m “mesaj” ) ediyoruz. Bize 3 dosyada toplamda 239 ekleme olduğunu belirten bir çıktı gönderiyor.
Tekrardan git log komutunu kullanarak kaç adet snapshot’umuzun olduğunu gözlemleyebiliyoruz. Burada görüleceği üzere Projemize ait 2 versiyon bulunmaktadır.
Checkout
Diyelim ki snapshotlar arası geçiş yapmak istiyoruz. Örnek olması açısından dosyalarımın boş hali olan ilk snapshot’a ( ya da ilk commite her neyse 🙂 ) geri dönüş yapıyorum. Bunun için git checkout <id>
HEAD, artık 499ccb8 ID’si ile başlayan projemizin ilk hali olarak gözükmektedir. Index.html dosyamızı açtığımızda projemizin ilk hali olan boş bir sayfa bizi karşılıyor olmalı…
Switch
Projemizi git switch – komutu ile tekrar eski haline getirelim ve master’a döndüğümüzü görelim.
Tekrar index.html dosyasını çağırdığımızda projemizin son hali gelecektir.