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.