4 Haziran 2017 Pazar

git 101 ve Temel git komutları(GitHub 2)

Bir önceki yazımda açıklamaya çalıştığım VKS mimarilerini uygulayan birden çok yazılım projesi bulunmakta.Bunlardan en çok kullanılanı,Linus Torvalds'ın Linux çekirdeğinin geliştirilmesini daha sistematik hale getirmek amacıyla başlattığı git projesidir.git Dağıtık Versiyon Kontrol Sistemi mimarisini kullanır.Dağıtık VKS mimarisinin temel özelliği,projeye ait verilerin geliştirici bilgisayarında da tutulabiliyor olmasıydı.git kullanabilmek için bir sunucuya ihtiyaç duyulmaz.Yani https://git-scm.com/ linkinden bilgisayara indirilidiğinde lokal kullanıma hazırdır.Linkteki program komut satırından çalışmakta olup görsel arayüzle çalışan alternatif programlarda bulunmaktadır.(GitKraken,SourceTree vb.).

Repository : 
Projenin tutulduğu dizin.Lokalde de Uzaktada olabilir.
Commit : 
Bir projede yapılan değişikliklerin tutulduğu veri tabanı kaydıdır.
Örnek bir commit ;
Yukarıdan aşağıya ;
1-hash-code(Bu commit'i diğerlerinden ayıran kimlik kodu)
2-commit'i yapan kişiye dair kimlik ve tarih bilgisi
3-commit adı
4-önceki commit'le oluşmuş farklar



Lokalde proje oluşturma ve commit yapma örneği;

rfm@hplinux ~ $ git init testproje #proje oluşturuldu
Initialized empty Git repository in /home/rfm/testproje/.git/
rfm@hplinux ~ $ cd testproje/ #projenin bulunduğu dizine gelindi
rfm@hplinux ~/testproje $ micro test.py #projeye yeni bir dosya eklendi
rfm@hplinux ~/testproje $ git add . #değişiklikler önbelleğe alındı
rfm@hplinux ~/testproje $ git commit -m"İlk commit" #değişiklikler commit edildi
[master (root-commit) 63889ad] İlk commit
 1 file changed, 2 insertions(+)
 create mode 100644 test.py
Uzak repository'e bağlanma ve commit yapma örneği;

rfm@hplinux ~ $ git clone https://github.com/rfum/blog #github üzerinde var olan bir repoyu lokale taşıdı
rfm@hplinux ~ $ cd blog/ #projenin bulunduğu dizine gelindi
rfm@hplinux ~/blog $ micro test.py #projeye yeni bir dosya eklendi
rfm@hplinux ~/blog $ git add . #değişiklikler önbelleğe alındı
rfm@hplinux ~/blog $ git commit -m"İlk commit" #değişiklikler commit edildi 
rfm@hplinux ~/blog $ git push #değişiklikler uzak repo'ya gönderildi

Versiyon Kontrol Sistemi Kavramı(GitHub 1)

Bir yazılım projesinde yapılan değişiklikleri sistematik hale getirmeye yarayan sistemlere Versiyon Kontrol Sistemi(VersionControlSystem) denir.3 farklı Versiyon Kontrol Sistemi mimarisi bulunur.

1-Yerel Versiyon Kontrol Sistemi : Proje üzerinde yapılan değişiklikleri içeren veritabanının ve kaynak kodların,değişimi yapan kişinin bilgisayarında tutulduğu sistemlerdir.Varsayılan haliyle ağ üzerinden erişime kapalıdır.Bilgisayarda çıkacak donanımsal bir problemde eğer proje ve veritabanı yedeklenmemişse proje tamamen kaybedilebilir.



2-Merkezi Versiyon Kontrol Sistemi : Proje üzerinde yapılan değişiklikleri içeren veritabanının ve kaynak kodların,merkezi bir bilgisayarda yani bir sunucuda tutulduğu sistemdir.Sunucuda çıkacak donanımsal bir problemde eğer proje ve veritabanı yedeklenmemişse proje tamamen kaybedilebilir.



3-Dağıtık Versiyon Kontrol Sistemi : Proje üzerinde yapılan değişiklikleri içeren veritabanının ve kaynak kodların,merkezi bir bilgisayarda ve geliştirenlerin bilgisayarında saklandığı sistemlerdir.Sunucuda problem çıkması durumunda projeye,geliştirici bilgisayarlarındaki verilerden bilgisayarda problem çıkması durumundaysa sunucudaki verilerden devam edilebilir.

Biraz daha ayrıntılı anlatım için :