git-flowでブランチ管理してみた。
参考URL
https://qiita.com/KosukeSone/items/514dd24828b485c69a05
https://tracpath.com/bootcamp/learning_git_git_flow.html
ブランチは適当に分けても大丈夫だけど、デフォの指針がないと困るので導入する
1, master リリースするブランチ。直接コミットはせずにdevelopからのマージのみ。リリースしたらタグでバージョン管理する
2, develop リリース前の最新バージョン。直接コミットはせずにfeatureなどからのマージのみ。開発者がgit cloneするのはコレ
3, feature branches developから分岐する。機能を追加したら、developにマージする。マージ後は削除?
4, hotfix masterから分岐。リリース後に致命的なバグ修正などを行って、masterにマージする
5, release branches リリース前のテスト的なブランチ。問題があれば修正してmaseter/developの両方にマージして、このブランチは削除する
6, support(オプション) 旧バージョンの保守とリリース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# 最初にgit initするとmasterブランチが作られる。 git branch * master # 次にgit-flowプラグインを導入 git flow init # すべてデフォでOK。エンター連打 Which branch should be used for bringing forth production releases? - master Branch name for production releases: [master] Branch name for "next release" development: [develop] How to name your supporting branch prefixes? Feature branches? [feature/] Bugfix branches? [bugfix/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? [] Hooks and filters directory? [gitのあるフルパス/.git/hooks] # developブランチが作られる。 git branch * develop master # featureブランチを作る git flow feature start ブランチ名(機能が分かりやすい名前) # master->develop->featureでブランチが分岐された。 git branch develop * feature/ブランチ名(機能が分かりやすい名前) master |
この状態でfeatureブランチにcheckout(切り替え)されているので、色々と修正してからgit add & git commitする
git flow feature finish ブランチ名(機能が分かりやすい名前)
すると、developにマージされて、用済みになったfeatureブランチが削除される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 本番リリース(developからreleaseブランチが分岐される) git flow release start 1.0 # リリース前テストなどがあれば行い、git add & git commitする # 本番リリース(masterへreleaseブランチがマージされる。releaseブランチは削除 git flow release finish 1.0 # リリース後に緊急バグ修正する場合は、hotfixブランチを生成 git flow hotfix start 1.1 # バグ修正して、git add & git commitする # masterにマージされ、hotfixブランチは削除。 git flow hotfix finish 修正した内容を記述 |
実際には、プロジェクトの途中から参加する事も多い。
1, developブランチから、ローカルにコピー
git clone -b develop レポジトリへのパス(URL)
2, 修正して、git add & git commit
3, リモートオリジンを設定
git remote add origin レポジトリへのパス(URL)
4, pushする。-uをつけておくと次回以降はgit pushだけでOK
git push -u origin feature/ブランチ名(機能が分かりやすい名前)
こういうパターンもあるかも
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# リモートブランチ一覧表示 git branch -r ... origin/develop # リモートブランチをcheckoutしようとすると、ローカルブランチにdevelopがあるからダメ git checkout -b develop origin/develop fatal: A branch named 'develop' already exists. # ローカルのdevelopブランチを削除 git branch --delete develop Deleted branch develop (was b1347a1e6). # 再度リモートdevelopブランチをcheckout git checkout -b develop origin/develop Checking out files: 100% (1338/1338), done. Branch develop set up to track remote branch develop from golfdo. Switched to a new branch 'develop' # 現在のブランチを確認 git branch * develop master # 一応、最新ソースか確認 git pull Already up-to-date. # 機能名でfeatureブランチ作成 git flow feature start 適当なブランチ名 Switched to a new branch 'feature/適当なブランチ名' # 現在ブランチを確認 git branch develop * feature/適当なブランチ名 master # 適当にgit add & git commit # リモートへpush( -uオプションをつけておけば、以後はgit pushだけでOK) git push -u origin feature/適当なブランチ名 |
【感想】
う~ん、git-flowはブランチが多くて面倒臭いな!
github-flowは、master⇔topicのブランチ2個で楽そうだ。