git-flowコマンドラインツールをgithub-flowとして使う

2016-01-18

要約:masterdevelop、ダミーのブランチをmasterにして、git-flowコマンドラインツールのfeature機能だけを使う


git-flowを導入してない、masterをメインのブランチとして使用している単純なgitリポジトリで作業する場合、

  1. git checkout -b feature/xxxxでフィーチャーブランチを作成
  2. 変更をコミット
  3. git checkout masterでマスターブランチに移動
  4. git merge feature/xxxxで変更をマージ
  5. git branch -d feature/xxxxでフィーチャーブランチを削除

などと手作業でしていたが、git-flowコマンドラインツール(またはSourceTreeのGit Flow)を利用できたら3~5がgit flow feature finish xxxx一発でできて楽だ。

そこでmasterブランチをgit-flowでいうところのdevelopとして使い、使わないダミーのブランチをgit-flowでいうところのmasterにしてやって、releaseを使わなければいいんじゃないかと思った。

$ git branch production  # ダミーのリリース用ブランチを作成
$ git flow init # git-flowセットアップ

Which branch should be used for bringing forth production releases?
- master
- production
Branch name for production releases: [production] production # productionをリリース用ブランチにする

Which branch should be used for integration of the "next release"?
- master
Branch name for "next release" development: [master] # masterを開発用ブランチにする

# あとはデフォルト
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []

試してみる:

$ git flow feature start hoge  # フィーチャーブランチhoge開始
Switched to a new branch 'feature/hoge'

Summary of actions:
- A new branch 'feature/hoge' was created, based on 'master'
- You are now on branch 'feature/hoge'

Now, start committing on your feature. When done, use:

git flow feature finish hoge

$ git branch
* feature/hoge
master
production

$ echo 'hoge' > hoge # ファイルを編集
$ git add hoge
$ git commit -am 'hoge' # コミット
[feature/hoge 6547b4f] hoge
1 file changed, 1 insertion(+)
create mode 100644 hoge
$ git flow feature finish hoge # フィーチャーブランチ終了
Switched to branch 'master'
Updating 8c6d9a7..6547b4f
Fast-forward
hoge | 1 +
1 file changed, 1 insertion(+)
create mode 100644 hoge
Deleted branch feature/hoge (was 6547b4f).

Summary of actions:
- The feature branch 'feature/hoge' was merged into 'master'
- Feature branch 'feature/hoge' has been removed
- You are now on branch 'master'

$ git branch
* master
production

どうやら意図通り使えるようです。


のちのち実際にgit-flowを導入するとなった場合には、設定が.git/configに保存されているので、削除して初期化しなおしてやればよい

# .git/config
...
[gitflow "branch"]
master = production
develop = master
[gitflow "prefix"]
feature = feature/
release = release/
hotfix = hotfix/
support = support/
versiontag =