giriiş
Bu makale, "Git Kullanımı" serisinin üçüncüsüdür. Hem kurulum makalesini hem de Git'i Etkili Bir Şekilde Nasıl Kullanırsınız makalesini okuduğunuzu varsayar.
Sürüm kontrol sistemleri dünyasında, GIT esneklik açısından tartışmasız en iyilerden biridir. Sözdizimini öğrenmek ve Git'in iş akışınıza ve ortamınıza en iyi şekilde nasıl hizmet edebileceğini anlamak çok kolaydır.
Bu eğitim size iki dalın (ana ve geliştirme) nasıl oluşturulacağını ve geliştirmeden üretime nasıl kod birleştirileceğini öğretecektir.
Bir dal, özünde, benzersiz bir ada sahip benzersiz bir kod değişiklikleri dizisidir. Her deponun bir veya daha fazla dalı olabilir.
Varsayılan olarak ilk dal “master” olarak adlandırılır.
Şubeleri Görüntüle
Yeni şubeler oluşturmadan önce, mevcut tüm şubeleri görmek istiyoruz. Aşağıdakileri yazarak mevcut tüm şubeleri görüntüleyebiliriz:
git branch -a
Komutun sonuna “-a” eklemek GIT'e, yerel çalışma alanımızda olmayanlar da dahil olmak üzere tüm kullanılabilir dalları görmek istediğimizi söyler.
Çıktı aşağıdakine benzer olacaktır:
* master remotes/origin/master
Çıktının ilk satırındaki "master" ifadesinin yanındaki yıldız işareti, şu anda o dalda olduğumuzu gösterir. İkinci satır ise, uzak sunucumuzda origin adında tek bir dal olduğunu ve aynı zamanda master olarak da adlandırıldığını gösterir.
Artık dalları nasıl görüntüleyeceğimizi öğrendiğimize göre, ilk dalımızı oluşturmanın zamanı geldi.
Şubeler Oluşturma
Bu makalenin başında da belirttiğimiz gibi kodlama ortamımız için bir geliştirme ve üretim kurulumuna sahip olmak istiyoruz.
Varsayılan "master" dalını üretim dalı olarak ele almak istiyoruz ve bu nedenle geliştirme veya ön üretim için tek bir dal oluşturmamız gerekiyor.
develop adında yeni bir dal oluşturmak için aşağıdakileri yazın:
git checkout -b develop
Henüz "development" adında bir dalımız olmadığını varsayarsak, çıktı şu şekilde olacaktır:
Switched to a new branch 'develop'
Eğer bu isimde bir dal zaten mevcutsa GIT bize şunu söyler:
fatal: A branch named 'develop' already exists.
Git checkout komutunu kullanarak iki dalınız arasında ileri geri hareket edebilirsiniz:
git checkout master
Veya
git checkout develop
Geçiş yapmak istediğiniz bir dal olduğunu varsayarsak, aşağıdakine benzer bir çıktı göreceksiniz:
Switched to branch 'master'
Varolmayan bir dala geçmeyi denerseniz, örneğin
git checkout nosuchbranch
Git size şunu söylüyor:
error: pathspec 'nosuchbranch' did not match any file(s) known to git.
Artık birden fazla şubemiz olduğuna göre, bunları iyi kullanmamız gerekiyor. Senaryomuzda, değişikliklerimizi test etmek için "geliştirme" şubemizi, bunları herkese açık hale getirmek içinse ana şubemizi kullanıyoruz.
Bu işlemi göstermek için geliştirme dalımıza geri dönmemiz gerekiyor:
git checkout develop
Geliştirme şubemizde değişiklikler yapıyoruz
Bu dalda "develop" adında yeni bir boş dosya oluşturuyoruz. Bu dosya, ana dalla birleştirene kadar (bir sonraki adımda) orada var olmayacak.
touch develop
Önceki eğitimde olduğu gibi git'e bu yeni dosyayı takip etmek istediğimizi söylememiz gerekiyor.
"develop" dosyasını şu şekilde yazarak ekleyebiliriz:
git add develop
Yukarıdaki komut seti “develop” adında boş bir dosya oluşturur ve bunu GIT’e ekler.
Ayrıca bu dosyayı commit etmemiz gerekiyor, bu da bu dosyayı şu anda bulunduğumuz "development" şubesine ekleyecektir.
git commit -m "develop file" develop
Bu dosya artık geliştirme dalında mevcut. Öğreneceğimiz gibi, ana dalda mevcut değil.
Öncelikle, şu anda geliştirme aşamasında olduğumuzu doğrulamak istiyoruz. Bunu şu komutu yazarak yapabiliriz:
git branch
Çıktı aşağıdaki şekle benzer olmalıdır:
* develop master
Zaten dal adının yanındaki yıldızın o dalda olduğumuzu gösterdiğini anlamıştık.
“ls” komutunu çalıştırdığımızda bu iki dosyanın var olduğu görülür:
lsÇıktı bize her iki dosyamızın da sırasıyla "file" ve "develop" adlarıyla bulunduğunu gösteriyor:
develop file
Dallar arasında kodu birleştir
İlginç olan kısım, orijinal şubemize geri döndüğümüzde gerçekleşir; bunu git checkout komutuyla yapabiliriz:
git checkout master
Ana dalda olduğumuzdan emin olmak için aşağıdakileri yazabiliriz:
git branch
Çıktı bize hangi dalda olduğumuzu söyler, yıldız işaretiyle gösterilir.
develop * master
“ls” komutunu tekrar çalıştırdığımızda yeni dosyamızın eksik olduğu görülüyor.
fileKaybolmadı, hem geliştirme şubemizde hem de ana şubemizde.
Senaryomuzda bu dosya, geliştirme şubemizdeki tüm testlerden geçmiş ve üretime hazır olan herhangi bir dosyadaki (veya tamamen yeni bir dosyadaki) değişiklikleri temsil eder. Kodu şubeler arasında (genellikle geliştirmeden üretime) taşıma işlemine birleştirme denir.
Birleştirme yaparken, birleşmek istediğimiz dalda olmamız gerektiğini unutmamak önemlidir.
Bu durumda “develop” dosyasının bulunduğu development dalımızdan master dalımıza birleştirmek istiyoruz.
Bunu aklımızda tutarak, şu anda master dalında olduğumuz için yapmamız gereken tek şey merge komutunu çalıştırmaktır.
Birleştirme komutuna verebileceğimiz seçeneklerden biri olan "–no-ff", git'in birleştirmeden önce tüm commit mesajlarını saklamasını istediğimiz anlamına gelir. Bu, gelecekteki değişiklikleri takip etmeyi kolaylaştırır.
Geliştirme dalındaki değişiklikleri ana dala birleştirmek için aşağıdakileri yazın:
git merge develop --no-ff
Komutun çıktısı aşağıdakine benzer olacaktır:
Merge made by the 'recursive' strategy. 0 files changed create mode 100644 develop
ls komutunu tekrar çalıştırdığımızda "develop" dosyamızın artık ana dalımızda olduğunu doğrularız.
develop file
Şimdi yapmamız gereken son şey, uzak sunucuda bu değişikliği yapmak için değişiklikleri push etmektir; bunu da git push komutu yardımıyla yapabiliriz.
git push
Geliştirme dalınızdan uzak sunucunuzdaki ana dala birleştirme yaptığınızı onaylayan aşağıdakine benzer bir çıktı göreceksiniz:
Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 332 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To ssh://[email protected]/repository 9af2dcb..53649cf master -> master
Sonuç
Yukarıdaki eğitimi takip ederek, iki dallı bir iş akışı kurulumuna sahip olmalı ve umarız GIT'te dallanmanın nasıl çalıştığına dair iyi bir anlayışa sahip olmalısınız. Düşüncelerinizi yorumlarda bizimle paylaşın!









