[Git] Gitflow でブランチを華麗にさばきたいを SourceTree で実現する

Git ブランチの管理・運用モデルを学ぶ。

[markdown]
日にちを空けてしまったので、いろいろ抜けてしまいました。
すぐに書かないとダメですね。

## Gitflow

最近、ブランチ管理がいい加減でダメだなと思ったリポジトリがあり、Gitflow があったなと思い出しました。

> * [見えないチカラ: A successful Git branching model を翻訳しました](http://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-model.html)

ブランチをさばくためのルールがあるのですが、Git に入門したてで理解して手動でさばける自信が無かったのでパスしてました。
下記の gitflow コマンドで補助はしてくれるようなのですが、なかなかハードルが高い。

> * [nvie/gitflow](https://github.com/nvie/gitflow)

## SourceTree の Gitflow 機能を利用する

ブランチの命名だけでも揃えようとしたところ、SorceTree の表示が変わるじゃないですか。
ブランチ名を `feature/1` と変更すると、SourceTree 上で分かりやすくまとめられて表示されます。

2015-04-07_gitflow_01

よくよく確認すると補助機能があります。

> * [Git、Mercurial 対応 無料 DVCS Mac、Windowsクライアント | Atlassian](https://www.atlassian.com/ja/software/sourcetree/overview)

ということで、確認してみました。

### 導入

プロジェクトの init です。
いままで使っていませんでしたが、そもそもでっかい Git Flow アイコンがありました。

2015-04-07_gitflow_02

アイコンをクリックすると、ブランチの命名ルールがモデルの通りに自動設定されています。
そのまま OK します。

2015-04-07_gitflow_03

既にあるリポジトリにも適用でき、リポジトリ自体の変更、影響はないようです。

### ブランチの作成

Git Flow アイコンをクリックすると、ブランチの作成ダイアログが表示されます。

2015-04-07_gitflow_04

リリースブランチ選び、名前などを入力していくとモデルに沿ったブランチ操作を自動で行ってくれます。

2015-04-07_gitflow_05

Git Flow アイコンのクリックは、今現在のブランチやレポジトリの状況に応じて、よしなに計らってくれるようです。

### ブランチのマージ

手動でモデルに従う場合、feature は develop にマージ、develop は release に、release から master といった具合に、気を遣うところがあります。
が、SourceTree 上のブランチを右クリックすると、モデルに沿ったブランチさばきをしてくれました。

2015-04-07_gitflow_06

SourceTree の補助があれば、何も考えずとも利用できそうですね。

## Tips

Gitflow を意識してから、利用頻度が高くなった git tips。

### merge –no-ff

> * [見えないチカラ: A successful Git branching model を翻訳しました](http://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-model.html)

“`prettyprinted
$ git merge –no-ff myfeature
“`

以下で merge のデフォルトの振る舞いを –no-ff にできる。

“`prettyprinted
% git config –global merge.ff false
“`

SourceTree をつかえばいらないのかも。
弊害もあるので確認する。

### branch(clone)

> * [git の remote branch をすべてローカルに clone する | deadwood](https://www.d-wood.com/blog/2015/02/10_7396.html)

### stash

> * [誤って削除した git stash を戻す | deadwood](https://www.d-wood.com/blog/2015/02/12_7407.html)

### diff

> * [git diff でブランチ間をまたいでファイルやディレクトリを比較する | deadwood](https://www.d-wood.com/blog/2015/02/10_7398.html)

### checkout(merge)

> * [git checkout で異なるブランチのファイルを持ってくる | deadwood](https://www.d-wood.com/blog/2015/02/10_7401.html)

## 復習:ワークフローモデル

* [トピックブランチと統合ブランチでの運用例【ブランチ】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ](http://www.backlog.jp/git-guide/stepup/stepup1_5.html)
* [Git ワークフローとそのチュートリアル | アトラシアン](https://www.atlassian.com/ja/git/workflows)
* [「Gitブランチを使いこなすgit-flow/GitHub Flow入門」最新記事一覧 – ITmedia Keywords](http://www.atmarkit.co.jp/ait/kw/gitflow_nyuumon.html)

GitHub flow

* [GitHub Flow (Japanese translation)](https://gist.github.com/Gab-km/3705015)
* [Github-flow – GitHub Flow 図解 – Qiita](http://qiita.com/tbpgr/items/4ff76ef35c4ff0ec8314)
* [Github-flowを分かりやすく図解してみた – pyar.bz](http://b.pyar.bz/blog/2014/01/22/github-flow/)
* [【翻訳】GitLab flowから学ぶワークフローの実践 | POSTD](http://postd.cc/gitlab-flow/)
[/markdown]