🦔

Git入門(概要編)

2023/09/03に公開

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