GİT KULLANIMI,VE VERSİYON KONTROL SAĞLAYICILARI

Git,github ,versiyon kontrol sistemleri konusunda yazılan 99999999 yazıdan 1'sini yazan biri olarak,kendi yazımdan önce bana faydası dokunan kaynakları paylaşayım.Not:Eğer gerçekten hiçbir fikriniz yoksa bu yazıyı okumanız,en çok size fayda sağlayacaktır.Çünkü ihtiyaç ve faydalarınından senaryolar üzerinden anlatacağım .Ancak kulaktan dolma bir fikriniz varsa aşağıdaki kaynaklarada göz atmanız kesinlikle fayda sağlayacaktır.


Okuduğumu anlayacak kadar ingilizce biliyorum ,öğrenmek için sabırlıyım diyorsanız :https://git-scm.com/doc  her zaman en güzel kaynak ana kaynakçadır.                                

 İngilizce biliyorum ama sabırsız insanım ,temel seviyede kullanayım yeter derseniz.
-https://medium.com/@aminamollaysa/from-git-virgin-to-git-pro-102d9f7e63e4
-https://www.freecodecamp.org/news/git-101-git-workflow-to-get-you-started-pushing-code/
-https://www.git-tower.com/blog/git-cheat-sheet/

Türkçe güzel ,detaylı bir kaynak varmı? derseniz tabiki özcan acar hocanın git kitabı tam sizlik.http://www.pratikprogramci.com/urun/pratik-git/
Hey koca adam benim vaktim yok derseniz.Güzel bir rehber :https://rogerdudler.github.io/git-guide/index.tr.html



GİT NEDİR ? 

Yazılım geliştirmede kullanılan versiyon kontrol sistemidir .

NEDEN GİT KULLANMALIYIZ ?

  1. Daha düzenli bir çalışma ortamı
  2. Birçok kişi ile birlikte çalışabilme ve projeye ait farklı konularda çalışma imkanı 
1.DÜZENLİ ÇALIŞMA ORTAMI
Örneğin git kullanmadığımız vakit ya sadece ana dosya üzerinde çalışacağız veya dosya1 dosya2 şeklinde dosyaları manuel kopyalayacağız .Gerçek bir projede birazdan işlerin nasıl yürüdüğünü göstereceğim.

2.BİRÇOK KİŞİ İLE ORTAK ÇALIŞABİLME 
Zamanında uygulanan çözüm bir sunucudan kopyala yapıştır mantığı ile dosya aktarımı yada herhangi bir araçla kodları aktarmak ancak githubta buna ihtiyaç yoktur.Bir sunucuya git kurarak veya bu servisleri sağlayan github,bitbucket vb yapılarda ortak çalışabiliriz.


GİTLAB ,GİTHUB,BİTBUCKET 

    Öncelikle ingilizcem var veya detaylı bir araştırma istiyorsanız sizi şuraya alalım.https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab
 Kısaca özet geç kardeşim derseniz.Kendi tecrübelerimden ve ufak araştırmalardan yararlanarak şunları söyleyebilirim.
Eğer açık kaynak projeniz varsa veya başka açık kaynak projelere katkı sağlamak istiyorsanız.github sizin için biçilmiş kaftan.Ancak private repo açmak ücretsiz ama 3 kişiye kadar ücretsiz.

Ufak bir ekibim var,private çalışmak istiyorum ama ücret ödemek istemiyorum diyorsanız .Bitbucket daha uygun trello gibi araçlar kullanarak ekibinizi rahatlıkla yönetebilirsiniz.Ancak bitbucketta 5 kişiye kadar ücretsiz.

Eğer ekibim 5 kişiden fazla ama ücret ödemek istemiyorum,CI/CD gibi yöntemler kullanmak istiyorum detaylı bir araç istiyorum derseniz.Gitlab sizin için biçilmiş kaftan.

Kardeşim ben kendi sunucumda çalışmak istiyorum sunucumda nasıl kullanıcam derseniz.Oda başka bir makalenin konusu.Talep olursa elimden geldiği kadar anlatmaya çalışırım.

     GİT'E AİT KAVRAMLAR

  1. REPOSİTORY(REPO) :Kodlarımızın içinde bulunduğu çalışma dizini.
  2. BRANCH(DAL):Çeşitli ek özellikler geliştirmek için çalışma dizininden ayrı çalışmamızı sağlayan yapı.
  3. Commit :yorum yapmak 
  4. Organization :bildiğimiz organizasyon ,birçok kullanıcı ile birlikte bir organizasyon oluşturulabilir.
  5. Project:proje :)
Not: Proje ile repository arasındaki fark şudur ,bir projede birçok repo oluşturabiliriz ancak repository daha basit bir çalışma dizini sunar .Örneklerle birlikte kavramları daha net açıklayacağım.

NE OLUYOR GİT İLE NASIL ÇALIŞIYORUZ NASIL İŞ YAPIYORUZ (SENARYOLAR)

    1. İki frontend developer,iki backend developer ,1 yönetici bir proje üzerinde çalışıyoruz.Farklı branchler açarak frontend developerlar bir branchte ,backend developerlar bir branchte çalışabilir.1 yönetici master repositorye her 2 daldaki çalışmaları aktarır.
    2.  1 senior ve 1 junior developer bir proje üzerinde çalışıyorlardır,iki branchte 1 master 1 tane başka branch  açılır ,junior ve senior developer 1 branchte çalışır .Senior developer işi tamamladıktan sonra master branche projeyi aktarır.

TEKNİK OLARAK NASIL ÇALIŞIYORUZ

Bir kişi veya birkaç kişi ,bir private(özel),public(açık) bir repository açar  ve yapılacak projeler ve özelliklere göre branchleri ayarlar ardından projede çalışan gönüllüler veya çalışanlar o proje clonelayıp değişiklikleri commitleyip push ederler (yorum yazıp kaynağa gönderirler) ,gerektiğinde değişikliklerini local repolarına çekip geliştirme yapılır ve bu döngü sürer gider.

BANA KOD GÖSTER /KULLANIM GÖSTER

Gelelim kuru fasulyenin faydalarına,şimdi aşama aşama temel işlemleri github.com üzerinden yaparak temel seviyede git kullanımını çözeceğiz.NOT:github üyeliğimiz olmak zorundayız.
https://github.com/join?source=header ardından giriş yapıp yeni bir repository açabilirsiniz.

YENİ BİR REPOSİTORY /PROJE /ORGANİZASYON AÇMAK



+ işaretine bastığımızda zaten istediğimiz şeyi oluşturabiliriz.

Yeni repository                 
                                                                                                                            
yeni organizyon



yeni proje


repository oluşturalım ve create repositorye basalım.



aslında karşımıza çıkan çıktı ,ne yapacağımızı gösteriyor,bu yazıyı bitirip komutları yazıp temel seviyede öğrenebiliriz.Ancak birkaç şey daha göstermek istiyorum.
 yukarıdaki kodları yazıp sonucu görelim.

 sonucu  görelim.Local repositoryimizdeki verilerimizi github reposu ile senkronize ettik.




















BRANCH(DALLAR) İLE ÇALIŞMAK

Şimdi ise bu blogta kullanılan resimleri ,resimler adında yeni bir dal/branch açıp ardından bu branch ile senkronize edelim.

git checkout -b <branch ismi>  şeklinde komutla yeni bir branch oluşturabiliriz.


Gördüğünüz gibi master branchinde resimler dosyası yok ,branchin içine bakalım.


Hokus Pokus gördüğünüz gibi oluşturduğumuz branchimizin içinde resimler klasörü var.


Bütün dallarımız/branchlerimiz gördüğünüz gibi ortada.



BAŞKA BİR PROJEYE KATKI SAĞLAMAK FORK VE PULL REQUEST

İlk olarak karşıdaki bir projeyi fork etmeliyiz. Ve forka basalım.

 Ve projemizi fork edip ardından clonelayalım.



Klonladıktan sonra klasörümüzü açıp birşeyler ekleyelim.


 ardından eklediğimiz şeyleri push edelim.


 Gördüğünüz gibi kendi forkladığımız reponun master branchi ile local repomuzu senkronize ettik.


Ve new pull requeste basarak ,proje sahibine değişiklikleri gönderelim.

 Create pull requeste basalım.(Burada 2 projeyi karşılaştırıyor aslında kontrol etmek faydalıdır)
     Yaptığımız değişiklikleri proje sahibine açıklayalım ve pull requeste basalım.


Gördüğünüz gibi projeye katkı sağladık.Ve aşağıda ana repositorynin network grafiğinde katkı sağlandığını görüyoruz.






















Sorularınızı ve git ile ilgili sorularınızı bekliyorum.



Hiç yorum yok:

Yorum Gönderme