要約: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 =