Temel Git Komutları
Merhaba, bu yazımda temel git komutlarından bahsedeceğim. Eğer Git ile ilgili bilgi edinmek ve Git kurulumunun nasıl yapıldığını gözden geçirmek istiyorsanız bu linki, Git temel yapısı ve kavramları hakkında bilgi edinmek istiyorsanız bu linki inceleyebilirsiniz.
Git Ayarlarının Yapılması
Öncelikle Git ayarlarının yapılması ile başlayalım. Git sisteminde kullanılan kullanıcı adınızı değiştirmek istiyorsanız terminali açıp aşağıdaki komutu çalıştırabilirsiniz.
git config --global user.name "Kullanıcı Adı"
Mail adresinizi değiştirmek için ise aşağıdaki komutu çalıştırmanız gerekmektedir.
git config --global user.email "email@adresi.com
Git Projesi Oluşturma
Bir projede Git kullanacaksanız terminal ekranını açıp, proje klasörünüzün olduğu konuma giderek aşağıdaki komutu çalıştırmanız gerekmektedir. Eğer Linux kullanıyorsanız cd, ls gibi komutları bilmenizde fayda var.
git init
Git projesinin başarılı bir şekilde oluşturulup oluşturulmadığını aşağıdaki komutla kontrol edebilirsiniz.
git status
Bu komutu çalıştırdığınızda aşağıdaki gibi bir çıktıyı görmeniz gerekmektedir.
Üzerinde bulunulan dal: master
Henüz bir gönderi yok
Gönderilecek bir şey yok (dosyalar oluşturun/kopyalayın ve izlemek için "git add" kullanın)
Değişiklikleri Kontrol Etme
Git yapısını açıkladığım yazımda Git'in proje klasörü, geçiş bölgesi(Stage Area) ve depo(repository) olmak üzere üç yapıdan meydana geldiğini söylemiştim. İşte proje klasörü, geçiş bölgesi ve depo arasındaki farklılıkları kontrol etmek için aşağıdaki yapıyı çalıştırabilirsiniz. Status komutu genel anlamda Git projeniz hakkında bilgi verir.
git status
Add Komutu
Proje klasöründeki değişiklikleri geçiş bölgesine(stage area) göndermek için add komutu kullanılır.
git add .
Bu komuttaki nokta, projedeki tüm değişiklikleri geçiş bölgesine gönder anlamına gelir. Eğer sadece bir dosya veya klasördeki değişiklikleri göndermek istiyorsanız nokta yerine dosya veya klasör adını yazabilirsiniz.
Commit Komutu
Geçiş bölgesinde yer alan değişiklikleri depoya bildirmek için commit komutu kullanılır. Önce add, sonra commit komutunun kullanılmasıyla proje klasöründeki tüm değişiklikler depoya bildirilmiş yani kopyalanmış, yedeği alınmış olur.
git commit -m "Açıklama"
Açıklama kısmına yaptığınız değişikliklerle ilgili hatırlatıcı metinler yazabilirsiniz ya da versiyon numarası verebilirsiniz.
Log Komutu
Projenizde yaptığınız tüm commit işlemlerini listelemek yani tüm yedekleri görüntülemek istiyorsanız log komutunu kullanabilirsiniz.
git log
Bu komutu çalıştırdığınız zaman aşağıdaki gibi bir çıktı verilecektir.
commit f059e68633e77b9029128c57977a26250d5c5cd7 (HEAD -> master)
Author: Yücel <mailadresi@gmail.com>
Date: Sat Jan 30 15:49:47 2021 +0300
v 1.1
commit 2942e44f1b5944060496af3d67c04d04ea4f42c0
Author: Yücel <mailadresi@gmail.com>
Date: Sat Jan 30 15:49:31 2021 +0300
v 1.0
Burada v 1.0 ve v 1.1 gibi isimler benim commit işlemi sırasında açıklama kısmına yazdığım ifadeler. Siz hangi açıklamayı yazarsanız o görünecektir.
Bu çıktıyı incelediğimiz zaman projeye ait 2 commit işlemi yapıldığını görüyoruz. Yine her işlem için ayrıntılı bir tarih ve saat bilgisi yer almaktadır. commit ifadesinin karşısında yer alan uzun kod ise o işleme ait benzersiz bir koddur. Sonraki işlemlerde bu kodun ne işe yaradığını göreceğiz.
Diff Komutu
Diff komutu proje klasörü ile geçiş bölgesinde yer alan dosyalardaki farklılıkları listeler. Diyelim ki commit işlemi yaptıktan sonra bazı dosyalarda kod yazmaya devam ettiniz. İşte aşağıdaki komutu çalıştırırsanız proje klasörünüzde yer alan dosyalar ile geçiş bölgesine gönderdiğiniz dosyalar arasındaki kod farklılıklarını görebilirsiniz.
git diff
Bu komutu çalıştırdığınızda aşağıdaki gibi bir çıktıyla karşılaşabilirsiniz.
diff --git a/main.py b/main.py
index 7ecbb04..d7510ee 100644
--- a/main.py
+++ b/main.py
@@ -1 +1 @@
-print("Merhaba")
+print("Selam"
Başında + olan satırlar, bu dosyaya eklenen satırları, - olan satırlar ise dosyadan silinen satırları göstermektedir.
Geçiş bölgesi(stage area) ile depoda(repository) yer alan dosyalardaki farkları görmek istiyorsanız diff komutunu aşağıdaki gibi kullanmanız gerekiyor.
git diff --staged
Bu komutun çıktısı da yukarıdaki gibi başında + ve - işareti bulunan satırlardan oluşacaktır. Tabii ki dosyalarda değişiklik varsa.
Dosya veya Klasör Silme
Bir dosya veya klasörü sildikten sonra önce add ile geçiş bölgesine, sonra commit ile de depoya gönderebilirsiniz. İkinci yöntem olarak ise terminalden bu dosya veya klasörleri silme yoluna gidebilirsiniz.
git rm dosyaAdi
Dosyayı sildikten sonra add ve commit işlemleri yaparak değişikliği depoya bildirebilirsiniz.
Klasör silmek için ise -r parametresi kullanmanız gerekiyor. R parametresi recursive ifadesinin kısaltılmış halidir. Kendi kendini yineleme, kendi kendini çağırma anlamına gelir. Recursive ifadesi hem Matematik hem de yazılımda kullanılan bir terimdir. Daha fazla bilgi için bu linki inceleyebilirsiniz.
git rm -r klasörAdi
Versiyon Değiştirme
Geldik Git sisteminin bizlere sunduğu en büyük hizmeti kullanmaya. Diyelim ki projemizi daha önce 3 kez commit ettik. Yani projemizin 3 kez kopyasını aldık. Daha sonra projemizde yanlışlıkla bazı dosyaları sildik veya bazı dosyaların kodlarında hatalı düzenlemeler yaptıktan sonra kaydettik. Bu durumda daha önce aldığımız yedeklere nasıl geçiş yaparız? İşte bu işlem için checkout komutu kullanılır. Yukarıda status komutunu açıklarken her commit işleminin kendine özel bir değeri olduğunu söylemiştim. İşte bu değer bize şimdi lazım olacak.
git checkout commitDeğeri -- .
Bu komutu terminal ekranında çalıştırdığınız zaman projeniz, özel değerini yazdığınız commit işlemindeki haline geri dönecektir. Örneğin;
git checkout aab61adcb5e47a4325dbf3558573dcf045228c5c -- .
Her commit için üretilen özel değerin ilk 7 karakterini yazmanız da bu işlem için yeterli olacaktır.
git checkout aab61ad -- .
Bir Dosyayı Geri Getirme
Projenizin tamamını etkileyecek bir sürüm değişikliği yapmak yerine silinen bir dosyayı geri getirmek istiyorsanız checkout komutunu aşağıdaki gibi çalıştırabilirsiniz.
git checkout commitDeğeri -- dosyaAdi
Örneğin;
git checkout aab61ad -- yazdir.py
Branch (Dalları) Listeleme
Bir projeye ait dalları listelemek için aşağıdaki komut kullanılır.
git branch
Hem bilgisayarımızdaki hem de projemizi bağladığımız uzak sunucudaki (Github, Gitlab gibi) dalları listelemek içinse aşağıdaki komut kullanılır.
git branch --all
Bu komutları çalıştırdığımız zaman aşağıdaki gibi bir çıktı ile karşılaşırız.
dal1
* master
Burada yeşil renkle belirtilen ve başında * işareti olan dal, üzerinde çalıştığımız branch'ı temsil eder.
Branch (Dal) Ekleme
Bir proje için yeni bir branch eklemek istiyorsak aşağıdaki komutu kullanmamız gerekiyor.
git branch dalAdi
Buradaki dalAdi yazan yere istediğiniz branch name yani dal adı yazabilirsiniz.
Branch'a (Dal) Geçiş Yapma
Bir proje için oluşturulan yan dala yani branch'a geçiş yapmak istiyorsak aşağıdaki komutu kullanmamız gerekiyor.
git checkout dal1
Burada dal1 yazan yere, geçiş yapmak istediğiniz branch name yani dal adını yazmanız gerekiyor.
Branch'lar (Dallar) Arası Farklılıkları Listeleme
İki branc arasındaki farklılıkları listelemek için aşağıdaki komut yapısı kullanılır.
git diff dalAdi1 dalAdi2
Yukarıdaki örneğimize göre bu ifadeyi şu şekilde kullanabiliriz.
git diff master dal1
Branch'lar (Dallar) Birleştirme
Bulunduğunuz branch ile başka bir branch'ı birleştirmek için aşağıdaki gibi bir komut yapısı kullanılır.
git merge dalAdi
Diyelim ki master branch'ındasınız ve dal1 ile master'ı birleştirmek istiyorsunuz. O zaman aşağıdaki komutu terminal satırında çalıştırmanız gerekmektedir.
git merge dal1
Git kullanmak için önemli olan komutları anlatmaya çalıştığım. Diğer komutlar için Git yardım sayfasına bakabilirsiniz.
Soru ve görüşlerinizi yorum olarak belirtebilirsiniz.
Hayırlı çalışmalar dilerim.