用語的なものを自分なり解釈したものまとめ(適宜足す予定)
統合ブランチ
リリース版のプロジェクトを保持しておくためのブランチみたいなイメージ。
ここから開発用やバグフィックス用のブランチなどに枝分かれしていく起点となるような感じか。
リリースしたらタグ付けする。
通常はmasterブランチがその役目を果たすらしい。masterブランチは一番最初にリポジトリにコミットするとできる。
トピックブランチ
何かの開発案件、バグフィックスなどのテーマ毎に統合ブランチを元ネタとして作られるもの。
それぞれのブランチで開発が完了したものを最後に統合ブランチに取り込むらしい。
git-flowってのだと
・masterブランチからdevelopというブランチを作成する。これによって商用で動いているプロダクトのブランチと開発用ブランチを明確に分けようとしているっぽい。
・feature branchesというたとえば機能ごと、案件ごとみたいなブランチを作ってそこで開発をする。feature branchesのもとになるのはdevelopブランチ。
・hotfixes:バグ修正開発用のブランチ。これはmasterブランチが元になるらしい。直したらmasterと開発ブランチにマージ。
・release branches:開発がほぼ完成してリリースが近づいたらdevelopブランチを基にして作る。
developのままでいいじゃんって思っちゃうけどこのブランチでdevelopと明確に分けることで未リリース予定のものが混入したりするのを防げるのかな?
完全に準備ができたらrelease branchesの内容をmasterにマージしてタグ打ちをする。
あと、不幸にもこのブランチにまたバグが見つかったらmasterに入れた内容と同じようにバグフィックスをdevelpoにもマージする。
※git-flowとかはについてはこちらの記事を参考にさせていただきました。ありがとうございます。
その他用語的なもの
- チェックアウト:作業ブランチを切り替えること。SVNとは用語の意味が全然違うので注意。
- ヘッド:今いるブランチの最新のコミットのこと。
- スタッシュ(stash):ワークツリー内の変更を一時的に隠すことをいう。
たとえばブランチAで作業中にファイルを更新していたけど急にブランチBで作業したくなった場合、 すぐにブランチBにチェックアウトしてしまうとAでの更新内容がBにもっていかれてしまうのでそれを防ぐみたいな感じで使えるらしい。
ブランチごとにPC上のディレクトリ分けておけばいいんじゃん?とも思うけどその辺は使い方次第なのかな。 - マージ:枝分かれしたブランチの内容を統合すること。
masterから枝分かれしたブランチAの内容をmaster側に取り込みたかったらmasterが作業ブランチになるようにチェックアウトコマンドを実施。
その後git merge ブランチAってやるとAの内容が取り込まれる。取り込みがちゃんと終わったらブランチAは消してもいい。