Git Nasil Kullanilir
Git Kullanmanın Avantajları

Diğer versiyon kontrol sistemleri (VCS) merkezi bir yapı kullanırken ve bu yapıya sürekli bağlı olmak gerekirken git’te her kullanıcıda bütün bir kopya mevcuttur ve internet olmayan ortamlarda dahi proje geliştirilmeye devam edilebiliyor. 

Git gerçekten çok hızlı ve kaynak depoları disk üzerinde çok az yer kaplıyan bir kaynak kontrol sistemidir. Git ile dallanma (branching) ve birleştirme (merging) işlemleri kolay ve hızlı bir şekilde yapılmaktadır.

Git dağıtık (distributed) olduğu için her bir geliştiricinin makinesinde proje bütün geçmişi ile birlikte tutulabiliyor. İlk başta bunun işlemleri yavaşlattığı ve disk israfı olduğu düşünülebilir. Fakat git'in oldukça etkin algoritmalar kullanması sayesinde bu sorunlar hiç yaşanmamaktadır. 

Git'de grup halinde çalışmalarda herkesin yaptığı değişiklikleri görebiliyoruz. 

Projenin yayına çıkacak kısmının beklemesini istiyorsak ve üzerinde de bir şeyler denemek istiyorsak o zaman çalışan kopyamız belli bir dallanmaya (branching) ayrılarak diğer kopyalar üzerinde rahatça çalışmamız sağlanıyor. İstersek bu kopyayı çalışabilir durumdaki kopya ile birleştirebiliriz. 

Bir önceki yazımızda Git'in kurulumunu yaptıktan sonra kullanımıyla ilgili bazı komutları öğrenmiştik. Şimdi kaldığımız yerden devam edelim. 



Bilgisayarımız ve Github arasında güvenli bir bağlantı sağlayabilmek için ssh-key kullanmalıyız. Bunun için bilgisayarımızda ssh-key oluşturmamız gerek. Önce var olan bir key var mı diye bakalım.



cd ~/.ssh

ls # config id_rsa id_rsa.pub known_hosts


Daha önce oluşturulmuş bir key'imiz varsa onu silip yeni oluşturabiliriz.

mkdir key_backup

cp id_rsa*

rm id_rsa*

Yeni bir ssh key oluşturalım.

ssh-keygen

Karşımıza gelen aşağıdaki ekranı Enter'leyerek geçelim.

Creates a new ssh key using the provided email

Generating public/private rsa key pair.

Enter file in which to save the key (/home/you/.ssh/id_rsa):

Arkasından ssh key oluşturmak için bizden şifre girmemiz isteniyor.

Enter passphrase (empty for no passphrase): [Type a passphrase]

Enter same passphrase again: [Type passphrase again]

İşlemleri doğru yaptı isek aşağıdaki gibi bir ekran görüntüsü almamız gerekmektedir.

Your identification has been saved in /home/you/.ssh/id_rsa.

Your public key has been saved in /home/you/.ssh/id_rsa.pub.

The key fingerprint is:

01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@youremail.com `

Github'ta Account Settings'te sol taraftaki add ssh key bölümüne girip oraya ssh key'imizi ekliyoruz.

Lokal Depo Git tarafından yönetilen üç ağaçtan oluşur. aşamada çalışmaktadır:

1- İlk kısım gerçek dosyaları tutan Çalışma Dizini,
2- İkinci kısım yereldeki depomuz İndex,
3-Üçüncü kısım ise uzak depo Head

Şimdi clone komutu ile uzaktaki projeyi çekelim.
git clone uzak_sunucu_adresi
Böylece projeyi tüm değişikleriyle bilgisayarımıza almış olduk.

Depoya Dosya Nasıl Eklenir? 


Öncelikle depoya eklemek istediğimiz veya daha önce eklenmiş,değişiklik yapılmış dosyayı index denilen git geçici alanına eklemeliyiz.


git add dosya_ismi


Şimdi bu dosyanın geçici alandan alınıp yerel depoya gönderilebilmesi için commit edilmesi gerekli.
git -m taahhüt "commitin içeriğini anlatan mesajımız"
Böylece dosyamız yerel depoya atıldı.Ancak henüz uzak depoya ulaşmadı.Uzak depoya atabilmemiz için aşağıdaki kodu giriyoruz.


git push origin bulunduğumuz_branch_dalı


Arkadaşlarımızın yaptığı değişiklikleri kendi yerl depomuza çekmek için; 



git pull


Dallar (Branches)

Git'te default olarak master dalı gelir. İstersek başka dallar oluşturabiliriz ve silebiliriz.


git branch yeni_dal_ismi (yeni dal oluşturmamızı sağlar.)

git checkout yeni_dal_ismi (o dala geçmemizi sağlar.)

git branch -D branch_adı (dalı siler.)

Git Nasil Kullanilir

Birden fazla dalımız varken iki daldaki değişiklikleri birleştirmek için merge komutunu kullanıyoruz. Bu komut ile bulunduğumuz branch, burada ismini vereceğimiz branch ile birleşmiş oluyor. Merge işlemi iki farklı geliştirici ortak değişiklikleri commit'lemiş ise çakışmalara yol açabilir. Buna dikkat etmek gerekir.


git merge dal_adı