Git入門(概要編)
Git入門(概要編)
Gitとは
プログラムのソースなどのファイルの変更を管理するための分散型バージョン管理システム。
要はプログラムソースをいつ、誰が、何を変更したのか管理するためのツールで、このバージョン管理ツールのサービスとしてGitHubなどが存在します。
集中型 / 分散型バージョン管理システム
集中型バージョン管理システム
複数のユーザーが一つの保存場所に接続してファイルを管理します。
操作はネットワークに接続している状態で行われます。
例)CVS、Ssubversion
分散型バージョン管理システム
利用するユーザー、自身のPC上に保存場所を持ち各自が好きなタイミングでオリジナルの保存場所と同期を取ります。
操作はネットワークに接続していなくても可能です。
例)Git
Gitの3つの領域と目印
Gitはリポジトリ、ワークツリー(作業ディレクトリ)、インデックスの3つの領域を持ちます。
リポジトリ
リポジトリはファイルやディレクトリ(フォルダ)の状態を管理する場所のことを言います。
このリポジトリに変更履歴など様々な情報を保存します。
Gitのリポジトリはローカルリポジトリのリモートリポジトリの2つに分けられます。
ローカルリポジトリ
自分のローカルマシン上に配置するリポジトリで、普段の作業はローカルマシン上でローカルリポジトリを利用して行います。自分の作業結果を公開したい場合、リモートリポジトリに同期します。
リモートリポジトリ
サーバーに配置して複数人で共有するためのリポジトリ
ワークツリー
Gitの管理下に置かれた作業ディレクトリをワークツリーと言います。
インデックス(ステージエリア)
リポジトリとワークツリーの間に位置する一時的的な状態の記録場所をインデックスと言います。
インデックスがあることで必要な変更部分だけをリポジトリに取り込めます。
Commit(コミット)
コミットとコミットID
変更した管理情報をリポジトリに記録すること「コミットする」と言います。
その時割り振られる管理上の40桁のコード番号をコミットIDと言います。
HEAD(目印)
HEADはリポジトリの中の最新の変更履歴(最新のコミット)を指します。
→ 最新のコミットID
Push
ローカルリポジトリの変更をリモートリポジトリにアップロードすることを「Push(プッシュ)」と言います。
Clone
リモートリポジトリをローカルマシン上に複製することを「Clone(クローン)」と言います。
Pull
リモートリポジトリからローカルリポジトリを最新の状態に同期する操作を「Pull(プル)」と言います。
ブランチ
現行バージョンのプロジェクトから分岐させて変更の履歴を記録していく機能です。
分岐したブランチは別のブランチとマージして1つのブランチにまとめることができます。
例えば、複数の開発メンバーが同時に異なった機能を追加・修正する場合に本体に影響を与えず変更を管理するためにそれぞれブランチを作成して、そのブランチ上で作業を行い最終的に本体にマージします。
git-flowで定義されているブランチ
git-flowとは
Vincent Driessen氏が提唱したgitのブランチモデルで役割として主に5種類のブランチを切り替えながら開発を進めていきます。
masterブランチ
項目 | 内容 |
---|---|
説明 | リリースしたソースコードを管理するためのブランチで、本番にリリース できる状態を保つ必要があリます。 このブランチで直接作業することはなくマージをを行うだけのブランチです。 |
直接コミット | 不可 |
派生元ブランチ | master |
派生先ブランチ | develop, hotfix |
マージ先ブランチ | なし |
削除のタイミング | 削除不可 |
現在、GitHubではmasterは使わずにmainがデフォルトになっています。
developブランチ
項目 | 内容 |
---|---|
説明 | 開発の中心となるブランチです。開発中はdevelopブランチから派生ブランチを 切って作業完了後にdevelopブランチにマージします。 |
直接コミット | 不可 |
派生元ブランチ | master |
派生先ブランチ | release, feature |
マージ先ブランチ | なし |
削除のタイミング | 削除不可 |
featureブランチ
項目 | 内容 |
---|---|
説明 | 機能追加のや変更、バグフィックスを行うブランチです。一つの変更に対して 一つのブランチを切ります。 |
直接コミット | 可 |
派生元ブランチ | develop |
派生先ブランチ | なし(個人的には必要があれば派生したらいいと思う。) |
マージ先ブランチ | develop |
削除のタイミング | developブランチに完了後 |
releaseブランチ
項目 | 内容 |
---|---|
説明 | 製品をリリースするために使うリリース準備用のブランチです。 製品リリースに関連する作業はdevelopブランチからreleaseブランチを 切ってそのブランチでリリース作業を行います。 |
直接コミット | 可 |
派生元ブランチ | develop |
派生先ブランチ | なし |
マージ先ブランチ | master, develop |
削除のタイミング | mastersブランチマージ後(タグ付け後)、developブランチマージ後 |
hotfixブランチ
項目 | 内容 |
---|---|
説明 | リリースしたバージョンで発生したバグを速やかに修正する緊急リリース用 のブランチです。 |
直接コミット | 可 |
派生元ブランチ | master |
派生先ブランチ | なし |
マージ先ブランチ | master, develop |
削除のタイミング | mastersブランチマージ後(タグ付け後)、developブランチマージ後 |
補足
上記以外のブランチの他に「supportブランチ」もあるみたいです。
サポートブランチは旧バージョンをサポートし続けなければいけないプロジェクトで作成するブランチで、プロジェクトによっては不要で旧バージョンの保守とリリースを行のが目的です。
サポートが必要なmasterブランチのコミットから派生させてサポートが終了するまで独立してバグフィックスやリリースを行います。
マージ(ブランチのマージ)
現在使用しているブランチに特定のブランチを取り込むこと。
Pullリクエスト
開発者が他の開発者に変更や機能追加を提案できる機能です。主に作業内容をレビューアーに確認してもらう目的で利用されます。
- レビュー:変更した範囲をチェックする。(必要に応じて修正依頼をする)
- マージ:修正する必要がなければ、開発者のブランチをマージする
Discussion