Git-flow Vincent Driessen tarafından etkili dallanma (branching) yapmak için geliştirilmiştir.
Aşağıdaki dökümanlarda git-flow'un basit kullanımı anlatılmıştır. Daha detaylı kullanım için kaynakçada ki makale ve videoları izleyebilirsiniz.
- git-flow mükemmel bir komut satırı yardıma ve çıktısına sahiptir. Lütfen okuyun!
- Sourcetree ürünü git-flow için gui sağlıyor. Eğer komut satırı ile aranız yoksa değerlendirebilirsiniz.
Kurulum esnasında git-flow dal (branch), yayım (release), etiket (tag) ön ekleri ile ilgili size sorular sorar. Bunların hepsini boş bırakırak enter tuşuna başıyoruz.
OSX
brew install git-flow
Linux
apt-get install git-flow
Windows
Şaka yapıyorsunuz... *nix çekirdekli bir makine kullanın.
Havuza (repository) git-flow'un kurulması için git flow init kodu koşuyoruz.
Eğer git havuzunuz yoksa, git-flow bunu sizin için hazırlar.
- Yeni gelen release için geliştiricilerin eklediği yeni özellikler için
- Sadece mevcut develop havuzuna uygulanır.
- Diyelim ki size yeni bir görev verildi programa yeni bir özellik ekleyeceksiniz. O zaman develop dalından
git flow feature start NEW_FEATURE
kodunu çalıştıracaksınız. Bu kod size develop branchtan türemiş yeni bir dal varecektir.
Yeni özelliği bitirilmesi
- NEW_FEATURE dalını develop dalına birleştirir (merge)
- NEW_FEATURE dalını kaldırır
- Varsayılan dalı develop yapar
git flow feature finish NEW_FEATURE
Eğer bu yeni özelliği birden fazla developer ile geliştiriyorsanız uzak sunucuyada göndermeniz gerekmektedir. Eğer sadece siz kodluyorsanız yapmayınız.
git flow feature publish NEW_FEATURE
Eğer bir geliştiricinin yayınladığı özelliği almanız gerekiyorsa
git flow feature pull NEW_FEATURE
yapmalısınız.
- Yeni ürünüzün producta hazırlamanızı sağlar.
- Bu yapı ile ürünlerinize hotfix imkanı gelir ve yayım olunca otomatik etiketlenir.
Yeni bir yayıma başlamak için git-flow'un release kodunu kullanırız.
git flow release start RELEASE
Örneğin git flow release start 0.1.0 gibi
Eğer aynı özellik gibi yayımıda yayınlamak isterseniz
git flow release publish RELEASE
yapmanız gerekmektedir.
Bir yayımın bitmesi git-flow için büyük bir iştir. Aşağıdakileri yapar.
- release dalını master dalına birleştirir (merge)
- master dalını etiketler (tag)
- release dalını develop dalı ile birleştirir
- ilgili release dalını siler
- Kullanılmakta olan bir uygulamada beklenmeyen hatalar oluşabilir. Bunların hızlı bir şekilde düzenlenmesi gerekmektedir.
- Bu düzelmeler yeni bir versiyon ile tekrer sunucuya gönderilmelidir.
git flow hotfix start VERSION
git flow hotfix finish VERSION
- git flow init
- git flow feature start NEW_FEATURE
- git flow feature finish NEW_FEATURE
- git flow feature publish NEW_FEATURE
- git flow feature pull NEW_FEATURE
- git flow release start RELEASE
- git flow release publish RELEASE
- git flow release finish RELEASE
- git flow hotfix start VERSION
- git flow hotfix finish VERSION
Kaynaklar
- https://github.com/nvie/gitflow
- http://nvie.com/posts/a-successful-git-branching-model/
- http://danielkummer.github.com/git-flow-cheatsheet/
- http://buildamodule.com/video/change-management-and-version-control-deploying-releases-features-and-fixes-with-git-how-to-use-a-scalable-git-branching-model-called-gitflow
- http://vimeo.com/16018419
- http://vimeo.com/37408017