Gitの社内研修やってみた – 資料公開 – その2
投稿日:
■はじめに(公開資料の説明)
バージョン管理システムのスタンダードである「Git」。
前回、社内研修で使った資料のうち、前半部分である「領域とコマンド」の用語説明と概念図を公開しました。
この記事では、その続きである「ブランチモデルと識別子」の説明で使った用語説明と概念図を公開します。
また、こちらもアトラシアンのBitbucketとSourcetreeを使用する前提での内容となっています。
あくまで研修で使用した資料ですので、説明としては不足していたり、あくまで正確性よりも概念を示すだけの部分があると思いますが、これからGitの社内研修をするにあたって何か資料の参考になるものをお探しの方に役立てていただければと、以下に公開します。
それでは、どうぞ! ↓
●ブランチモデルと識別子
▼ブランチ
プロジェクトの変更履歴(コミットの重なり)を分岐させて枝分かれさせたもの。
「main」(旧名「master」)と名付けられる本流の履歴に対して、別バージョン(コミット)を分岐させるので、
お互いに影響を受けることなく並行で編集作業を進めることができます。
分岐したブランチは、「マージ」で本流に取り込む(統合する)ことができます。
ブランチを追加することを、「ブランチを切る」と言ったりもします。
▼コミット同士のつながり
・コミットには40文字のIDがそれぞれ付与されています。
・「親(parent)がどのコミットなのか」が、それぞれのコミットに記録されています。
・最初に作られたコミット(ルートコミット)は親の情報がなく、最初であるという意味になる。
・同じコミットを親とするコミットが複数ある場合、分岐が発生しているということになる。
・親が2つ以上ある場合、そのコミットはマージされたものとなる。
※2022年11月現在の Sourcetree では、コミットIDの最初の7桁だけが見えています。
「SHAをクリップボードにコピー」で全40文字がコピーされます。
▼ポインタ(識別子)
・ブランチ名は任意に付けることができます。
・ブランチとはコミットを示すポインタのことで、複数のコミットの履歴群を指すものではありません。
・すなわち、ブランチを追加する(切る)とコミットが増えるわけではありません。
・コミットされると、ポインタであるブランチは、コミットされた新しいコミットに自動的に移動します。
・デフォルトでは、最初のコミットには「master」または「main」とブランチ名が付けられます。
・ブランチ(ポインタ)を削除することもできます。
▼HEAD
・今、自分が作業をしているブランチを指すポインタです。
・ポインタ(ブランチ)のポインタ。
・つまり、現在チェックアウトされているコミットを基本的には指す。
※2022年6月現在の Sourcetree では、ローカルリポジトリのHEADは、ブランチ名とコミットの左側にそれぞれ◯印が表示されます。
▼origin
・リモートリポジトリの保管場所としてGitがデフォルトでつける名前。
・ブランチ名の前に「/」で区切られて付けられる。
・「origin」がついているのがリモートリポジトリ側で、付いていないのがローカルリポジトリ側です。
▼ブランチモデル
・多人数での運用を想定したブランチの運用ルールとして、git-flowというブランチの管理方法が考案されている。
・git-flowに囚われすぎず、案件によって取り回しの楽な管理方法を採用すれば良い。
▼git-flow
・main ブランチ
リリース用。git-flowではマージのみでコミットしない。リリースしたらバージョンタグを付ける。
・develop ブランチ
開発用。main同様マージのみでコミットしない。ここからブランチを切って作業する。
・feature ブランチ
作業用。developから分岐して作業後にdevelopにマージして削除する。
「develop/◯◯◯◯◯」とスラッシュで階層化して名付けることで、作業内容や作業者別に複数発生させることが多い。
・release ブランチ
リリース準備用。コメントや開発中の未動作部分を削除して、きれいな状態にしてmainとdevelopにマージして削除する。
・hotfix ブランチ
緊急対応用。リリース後のバグ修正など、mainから直接分岐して修正後にmainとdevelopにマージして削除する。
- Gitの社内研修やってみた – 資料公開 –
- 【その1】●領域とコマンド
- 【その2】●ブランチモデルと識別子