Önceki bölümde versiyon kontrol sisteminin ne olduğu hakkında biraz bilgi vermiş ve yaygın versiyon kontrol sistemlerinden bir tanesi belki de kategorisinin lideri pozisyonunda olan Git ve web depolama sistemlerinden Github hakkında inceleme yapmıştık. Bu bölümde ise temelden başlayarak Git komutlarını öğreneceğimiz bir inceleme yapmış olacağız.
Komut Adı | Açıklama |
git log | Git ortamı üzerinde yapılan işlemler hakkında log görmek istediğimizde kullanacağımız komut git log komutudur. Bu komut hangi kullanıcının ne yaptığı ve yapılan commit’in hash değerini kullanıcıya döndürecektir. |
git blame | Dosyalar üzerinde yapılan değişiklikleri görmek istediğimiz zaman kullanacağımız komut git blame dosya_adi şeklindedir. Verilen dosya içeriğindeki değişiklikleri blame komutu ile görebilmekteyiz. |
git status | Log ve blame komutları sık sık ihtiyaç duyabileceğimiz komutlar olduğundan bilinmesinde ve yaşanan sorunlarda kullanılması önemlidir. Dosya bazlı değişiklikleri blame ile görebiliyoruz ancak proje kapsamındaki değişiklikleri nasıl göreceğiz sorusuna yanıt olarak ise status komutu bizi karşılıyor.
Projedeki bir değişikliği görmek istediğimizde: git status komutunu kullanmalıyız. |
git show | Git üzerinde oluşturduğumuz yapılar hakkında genel bir bilgi almak için git show komutunu kullanıyoruz. |
git branch branch_adi | Branch üzerindeki değişiklikleri görmek için: |
git diff ilk_branch_adi diğer_branch_adi | İki branch arasındaki farkları görmek için ise |
Bu komutlar git sürecinde ihtiyaç duyacağımız temel komutlardır bu yüzden git ortamındaki yapıyı zihnimizde şekillendirebilmek için bu komutların neleri ifade ettiğini uygulamalar yaparak muhakkak öğrenmeliyiz. Yukarıda bahsedilen branch kavramının ne olduğunu henüz görmemiştik. Şimdi de branch’ın ne olduğuna ve nasıl oluşturulduğuna bakalım.
Branch, dallanma demektir. Git üzerindeki projeler dallar üzerinde tutulmaktadır. Bunu bir ağaç yapısı gibi düşünebiliriz. Zaten birinci bölümde performansından bahsederken de hızlı oluşunun veriyi tutuş ve işleme şeklinin işletim sistemi ve işlemci arasındaki mimaride saklı olduğundan bahsetmiştik. Şimdi bunu bir ağaç veri yapısı gibi düşünelim ve her bir projenin git üzerinde dallarda tutulduğunu bu biz farklı bir branch göstermedikçe her projenin master (main) dal üzerinde tutulduğunu unutmayalım.
Komut Adı | Açıklama |
git branch | Varolan branch yapılarını görmek için veya hangi branch üzerinde olduğumuzu görmek için kullanılır. |
git branch branch_adi | Yeni bir branch eklemek için kullanılır. |
git checkout branch_adi | Branch’lar arasında gezinme veya oluşturduğumuz branch’a geçmek için kullanılır. |
git checkout -b branch_adi | Branch oluşturur oluşturmaz o branch’a geçmek için kullanılır. |
git branch -d branch_adi | Varolan bir branch’ı silmek için kullanılır. |
git branch -m branch_adi branch_yeni_adi | Branch ismini değiştirmek için kullanılır. |
Branch’ları birleştirmemiz gerektiği durumlarda git’in bize sunduğu diğer kolaylık ise birleştirme (merge) işlemidir.
Örneğin git branch mshowto komutu ile mshowto isimli bir branch oluşturalım. Ardından git branch site isimli ikinci branch (dalımızı) oluşturalım.
Komut Adı | Açıklama |
git merge mshowto site | Bu iki branch’ı birleştirmek istediğimizde kullanılacak komuttur. |
Yapılan son commit işlemini geri almak isteyebiliriz. Bunun için de git bize iki kullanışlı komut sunmaktadır. Bu komutlardan bir tanesi revert diğeri ise reset komutudur.
Revert adından da anlayacağımız üzere commit işlemindeki değişikliği geri alırken reset direk commit işlemini resetler bu da commit’in silinmesi anlamına gelir.
Revert ve Reset kullanımı
Git log ile commit’leri görüntülediğimizde hash bilgisi dikkatimizi çekmişti. İşte revert işlemi yaparken geri almak istediğimiz commit’in hash bilgisine ihtiyaç duyacağız. Bu yüzden son yapılan commit işlemini geri almak için öncelikle git log komutunu çalıştıracağız ve geri almak istediğimiz commit’in hash değerini kopyalayacağız. Reset ise Revert ile aynıdır. Yine commit’in hash değeri verilerek reset işlemi yapılmaktadır.
Komut Adı | Açıklama |
git revert commit_hash_degeri | commit işlemindeki değişikliği geri alır. |
git reset commit_hash_degeri | commit işlemindeki değişikliği geri alır. ancak resetlediği için commit’in silinmesi anlamına gelir. |
git reset –hard commit_hash_deger | Eğer reset işleminde hata verirse veya farklı bir komut bu işlemi ezerse komutu force etmek amacıyla hash değerinin başına – – hard ekleyerek aşağıdaki şekilde güncellememiz gerekiyor. |
Git yapısına hakim olmamız için bilmemiz gereken komutlar yukarıdakiler gibidir. Şimdi artık bir projeyi nasıl push ederiz, nasıl pull ederiz, projeyi komple silmek nasıl olur veya clone işlemi nasıl gerçekleştirilir gibi git’i git yapan komutlara değineceğiz.
Komut Adı | Açıklama |
git config | İlk kurulumdan sonra ayarları yapılandırmak için kullanılan komuttur. |
git clone | Git uzantılı uzak depodaki projeyi yerel bilgisayara almak için kullanılan komuttur. |
git rm | Dosyaların silinmesi (remove) için kullanılan komuttur. |
git remote | Uzak depo adresini belirtmek için kullanılan komuttur. |
git push | Yerel bilgisayarlarımızdan uzak depoya dosyaları göndermek için kullanılan komuttur. |
git pull | Uzak depodaki değişiklikleri yerel bilgisayara almak için kullanılan komuttur. |
git init | Yerel bilgisayarımızda yerel bir depo oluşturmak için kullanılan komuttur. |
git add | Dosyaları yerel depoya eklemek için kullanılan komuttur. |
git commit | Yerel depodaki dosyaları yorum ekleyerek oluşturmak için kullanılan komuttur. |
Git yapısı itibariyle oldukça yalın bir kullanıma sahiptir. Kullanmaya başlanıldığı zaman kısa süre içerisinde tüm komutları akılda kalıcı bir şekilde yer edinecektir. Makalemizde uygulama görüntülerine de bu yüzden yer verilmemiştir. Önceki bölümde kurulumlarını gerçekleştirdiğimiz windows veya linux ortamı üzerinde bir yerel depo oluşturup ardından github veya farklı bir uzak depoda işlem yapmak üzere bu komutların her birinin denenmesi Git’i yeni öğrenen okuyucularımız için güzel bir uygulama olacaktır.
Şimdi ise açıklamalarıyla birlikte incelediğimiz komutlar için küçük bir uygulama yapalım. Komut satırı ortamında yürüttüğümüz hemen her modülde olduğu gibi Git için de git -h ile help ekranına düşebiliriz. Veya git help -komut adı şeklinde bir komut hakkında detaylı bilgiler edinebiliriz.
Şimdi Windows üzerinde yerel bir klasör oluşturup bu klasör içerisindeki projeyi Github’a git komutları ile nasıl gönderebileceğimizi uygulamalı olarak görelim.
Öncelikle Windows bilgisayarım üzerinde Git Yerel isimli boş bir klasör oluşturuyorum. Yapılan bu işlemleri Linux ortamında da birebir gerçekleştirebilirsiniz. Üyeliğimi gerçekleştirdiğim Github üzerindeki New Repository butonu ile yeni bir repository oluşturuyorum ve isim olarak “mshowto-test” diyorum. Bunu daha önce gerçekleştirmiştik.
Şimdi Windows bilgisayarım üzerinde Git Terminalini çalıştırıyorum ve oluşturmuş olduğum klasör dizinine geliyorum. Ardından bir alışkanlık olarak git versiyonumu kontrol ediyorum.
Resim-1
Şimdi ise git ortamına işlemleri yapan kişi olarak kaydımızı alabilmesi için isim ve e-posta bilgimizi kaydediyoruz. Git üzerinde bu işlemi git config –global komut grubu ile gerçekleştiriyoruz.
Resim-2
git config –global –list komutu kaydettiğimiz bilgileri bize liste olarak vermektedir.
Git tarafında artık yereldeki dizin üzerine dosya oluşturup commit etme aşamasına gelmiş bulunmaktayız. Dosyalarımızı web depolama sunucusu olarak github üzerinde barındıracağımız için önceki bölümde github üzerinde üyelik oluşturmuş ve mshowto-test isimli repository’mizi oluşturmuştuk. Artık yerel klasörümüzdeki dosyaları github üzerindeki mshowto-test reposuna gönderebiliriz.
Git Yerel isimli Windows ortamındaki klasörümüzün içerisinde herhangi bir dosya oluşturabiliriz ancak Git kılavuzlarından alışılagelmiş README.md dosyası bizim için yeterli olacaktır. Şimdi terminal üzerinden Git Yerel klasörümüze README.md dosyasını oluşturalım. Linux ortamında touch komutu ile oluşturmamız gerektiğini unutmayalım.
Resim-3
type nul > README.md şeklinde klasör içerisine dosyamızı oluşturmuş olduk.
Github ortamına geri döndüğümüzde oluşturmuş olduğumuz repository’nin içerisinde henüz bir dosya olmadığını görmekteyiz.
Resim-4
Şimdi git’i çalıştıralım ilk commit işlemimizi gerçekleştirelim ve Github ortamımıza geri dönüp dosyanın oluşup oluşmadığına göz atalım.
Windows ortamımızda Git Yerel isimli klasör içerisine bir adet README.md dosyası oluşturmuştuk. Şimdi bu klasör içerisine boş bir yerel git repository’si oluşturmamız gerekmektedir. Bunu yapabilmek için ise git init komutunu aşağıdaki gibi kullanıyoruz.
Resim-5
Git Yerel klasörünün de içerisine göz atalım ve hem README.md hem de boş bir git reposunun oluştuğundan emin olalım.
Resim-6
Görüldüğü gibi hem git reposu hem de .md uzantılı dosyamız oluşmuş durumdadır. README.md dosyası içerisine ben bir şey yazmıyorum ancak ileride yapılacak değişiklik durumlarını iyi anlayabilmek için sizler içerisine birkaç satırlık açıklama yazabilirsiniz.
Git üzerinde yerel depodaki dosyaları uzak sunucuya göndermeden önce bu dosyaların gönderilebilir olduğunu belirten bir aşamaya geçiyoruz. Bu aşamada dizin içerisindeki her şeyi hazırla anlamına gelen git add . komutunu da kullanabiliriz sadece şu dosyaları hazırla anlamına gelen git add README.md komutunu da kullanabiliriz.
Resim-7
Buraya kadar birkaç tane komut kullandık hiçbirinde hata almadık. Şimdi ne durumdayız görmek isteyebiliriz. Bunu yapabilmek için ise git status komutundan faydalanıyoruz.
Resim-8
Dikkat edileceği üzere master branch’ı üzerinde olduğumuzu ve README.md dosyasını oluşturduğumuzu ancak henüz bir commit yapmadığımızı görüyoruz. Artık yaptığımız işlemlerin tamam olduğunu bir commit ile belirtmemiz gerektiğinden git commit -m “birinci commit işlemimiz” şeklinde bir komut çalıştırıyoruz. Buradaki -m message anlamındadır.
Resim-9
Yukarıdaki görselde master branch’ı içerisinde bir commit işlemi gerçekleştiğine dair bir mesaj alıyoruz.
Artık uzak sunucuya gönderilmeye hazır hale gelen dosyalarımızı gitbub’a ekleyebilmek için Github panelinde de yer alan aşağıdaki komutları Git terminaline girmemiz yeterlidir.
Resim-10
git remote add origin https://github.com/fatihkaplanfk/mshowto-test.git
git branch -M main
git push -u origin main
ilk defa yapılan işlem için Github web sitesi üzerinden bir onay isteyebilir ardından github üyelik kullanıcı adı ve şifre git terminalden istenir bu bilgiler de girildikten sonra aşağıdaki gibi işlem başarılı bir şekilde tamamlanmış olur.
Resim-11
Github sayfamızı yenilediğimizde dosyanın yüklendiğini görüyoruz.
Resim-12
Yerel depoda bundan sonra yapılan her bir değişikliğin uzak sunucuya ittirilmesi işlemi için git push komutunu kullanırız.
Resim-13
Git Yerel klasörü içerisinde README-2.txt isimli bir dosya oluşturup aşağıdaki şekilde yeniden commit edebilir, push ile değişiklikler iletilebilir.
Resim-14
Resim-15
Üçüncü bir dosya oluşturup uzak depoya push ile göndermek için aşağıdaki komutlar kullanılır. Aşağıdaki komut ekranındaki hataya dikkat edilirse yerel depodan yine yerel bir origin’e göndermediğimiz için origin master komutunun geçerli olmayacağını bunun yerine önerdiği linkteki gibi uzak bir web depolama sisteminin bilgisinin girilmesi gerektiği hususunda uyarı alıyoruz. komutu düzeltince başarılı bir şekilde son değişikliği push edecektir.
Resim-16
Buraya kadar yaptığımız işlemlerin tam tersini yapmak isteyebiliriz. Yani github üzerinden yerel depomuza projeleri çekmek isteyebiliriz. Bunun için de git clone komutunu kullanırız. Github üzerindeki .git uzantılı repo ismimizi bu şekilde klonlayabiliriz.
$ git clone https://github.com/fatihkaplanfk/mshowto-test.git
Git üzerinde birden çok geliştirici işlem yapıyorsa her bir geliştiricinin arkadaşının yaptığı son sürüm üzerinden çalışması gerekir. Depodaki dosyaların güncelliğinin sağlanabilmesi için git pull komutu kullanılır.
Git üzerinde yeni bir dal yani branch oluşturmak için git branch Web_Projelerim komutunu kullanabiliriz. Git checkout Web_Projelerim komutu ile bu branch’a geçiş yapabiliriz. Git log ile yapılan işlem log’larını görebiliriz. Oluşturulan iki branch’ı merge komutu ile birleştirebiliriz.
Resim-17
Tablo içerisindeki komutlardan dosya silme, yapılan değişiklikleri geri alma gibi komutları da denemeniz üzere sizlere bırakıyorum.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs: git, git command, git komutları, Github, version control system, Versiyon Kontrol Sistemi