Close

2020-04-20

GIT Branching Yapısı (3)

GIT Branching Yapısı (3)

GIT üzerinde değişikliklerimizi izlemeyi, saklamayı ve kontrol etmeyi öğrendik.  GIT ‘i  normal yaşamda bu kadar basit kullanmıyoruz 🙂

GIT yapısı Branch’ lar üzerine kuruludur.  Şimdiye kadar kullandığımız branch, ana branch yani MASTER branch oldu.  Yazılım projelerimizde MASTER branch ‘i sadece production release‘ lar için kullanıyoruz.  Başka kullanım şekilleri vardır, benim kullandığım ve önerdiğim şekli bu olacaktır.  

Tek kişilik projelerde En basit olarak değişiklikler için DEVEL adında bir branch kullanıyorum.  DEVEL branch ‘ı kontrol ediyorum.  Release edilen sürümleri MASTER branch ‘e aktarıyorum.  MASTER üzerinde sadece üretim hattındaki sürümleri saklıyorum.  

Dersimizde pratik bir kullanım şekli  göstermek için iki yardımcı branch açıyorum.  Geliştirmeler için DEVEL , test işleri içinde DEVTEST yapılarını kullanmak istiyorum. 

ozgur-MacBook-Pro:gitsample ozgurozkok$ git branch devel

ozgur-MacBook-Pro:gitsample ozgurozkok$ git branch devtest

ozgur-MacBook-Pro:gitsample ozgurozkok$ git status

HEAD detached at 4ef6ed1

nothing to commit, working tree clean

ozgur-MacBook-Pro:gitsample ozgurozkok$ git log –oneline

4ef6ed1 (HEAD, master, devtest, devel) yeniden ekledim bi şeyler

02390c2 dosyayı yaratırken yaptğım değişiklikler

ozgur-MacBook-Pro:gitsample ozgurozkok$

LOG için ONELINE parametresini kullandım.  ONELINE tek satırda daha basit-özet bir gösterim sağlıyor.  

Şu anda MASTER branch üzerindeyiz.  Branch’ler arası geçiş için CHECKOUT kullanıyoruz.  

ozgur-MacBook-Pro:gitsample ozgurozkok$ git checkout devel

Switched to branch ‘devel’

ozgur-MacBook-Pro:gitsample ozgurozkok$ git status

On branch devel

nothing to commit, working tree clean

ozgur-MacBook-Pro:gitsample ozgurozkok$ 

Branch ‘ler arası benzer şekilde geçiş yapabiliyoruz.  

ozgur-MacBook-Pro:gitsample ozgurozkok$ git checkout devtest

Switched to branch ‘devtest’

ozgur-MacBook-Pro:gitsample ozgurozkok$ git status

On branch devtest

nothing to commit, working tree clean

DEVEL branch ‘I üzerinde bir dosya ekleyeceğiz.   Örnek olarak tool.cpp oluşturdum. 

Dizine baktığımda iki dosyayı görüyorum.  

ozgur-MacBook-Pro:gitsample ozgurozkok$ ls

main.cpp tool.cpp

ozgur-MacBook-Pro:gitsample ozgurozkok$ 

DEVEL branch’ ine geçiyorum. Yeni dosyayı GIT ‘e tanıtıp , COMMIT Yapıyorum. 

ozgur-MacBook-Pro:gitsample ozgurozkok$ git add tool.cpp

ozgur-MacBook-Pro:gitsample ozgurozkok$ git commit -m “tool.cpp dosyasını eklemiştim”

[devel 7472ef5] tool.cpp dosyasını eklemiştim

 1 file changed, 7 insertions(+)

 create mode 100644 tool.cpp

ozgur-MacBook-Pro:gitsample ozgurozkok$ git log –oneline

7472ef5 (HEAD -> devel) tool.cpp dosyasını eklemiştim

4ef6ed1 (master, devtest) yeniden ekledim bi şeyler

02390c2 dosyayı yaratırken yaptğım değişiklikler

Şimdi master branch’ e geçiyorum.  Devel ‘da yaptığım değişiklikleri buraya birleştireceğim. Bu amaçla MERGE komutunu kullanacağız.  

ozgur-MacBook-Pro:gitsample ozgurozkok$ git checkout master

Switched to branch ‘master’

ozgur-MacBook-Pro:gitsample ozgurozkok$ git merge devtest

Already up to date.

ozgur-MacBook-Pro:gitsample ozgurozkok$ git merge devel

Updating 4ef6ed1..7472ef5

Fast-forward

 tool.cpp | 7 +++++++

 1 file changed, 7 insertions(+)

 create mode 100644 tool.cpp

ozgur-MacBook-Pro:gitsample ozgurozkok$ 

LOG ile kontrol ediyorum. 

ozgur-MacBook-Pro:gitsample ozgurozkok$ git log –oneline

7472ef5 (HEAD -> master, devel) tool.cpp dosyasını eklemiştim

4ef6ed1 (devtest) yeniden ekledim bi şeyler

02390c2 dosyayı yaratırken yaptğım değişiklikler

ozgur-MacBook-Pro:gitsample ozgurozkok$ 

Genelde farklı branch ‘lerde farklı dosyalar ile çalışıp bunları değiştiriyoruz.  Şimdi tüm değişiklikler MASTER branch ‘imizde birleşti.