Git

Gitについてまとめてみた【全体像あり】

以前Progateで学習した分散型のバージョン管理ツールのGit。

【Webエンジニアへの転職日記】Progateでバージョン管理システムGitの学習

単純に一つのリポジトリ、ブランチに対してコミット、プッシュしていくだけであれば問題ありませんが、30DAYSトライアル2ndの内容をGitで日ごとにブランチきりながらやって行こうと思ったら全くダメだったので、ググりまくって改めてまとめてみました。

Gitとは?

改めてGitとは分散型のバージョン管理ツールになります。対となるものとしてSubversionなどの集中型のバージョン管理ツールがあります。

集中型のバージョン管理ツールはサーバー上のリポジトリに全ての開発者がアクセスして開発を行います。そのため、サーバーに接続できる環境でなければバージョン管理は行えません。

一方分散型のバージョン管理ツールであるGitは各開発PCにリポジトリ(ローカルリポジトリ)を作成し開発を行っていきます。バージョン管理自体はローカルリポジトリのみで可能ですが、共同開発を行う場合はサーバー上にもリポジトリ(リモートリポジトリ)を作成し、リポジトリの内容をダウンロードやアップロードして開発を行っていきます。

ローカルにもリポジトリが存在するため、サーバーに接続できない環境でもバージョン管理は行えます(その状態での修正が多いとリモートリポジトリとのマージ時に衝突(コンフリクト)が発生する可能性が高くなるので注意が必要です)

ちなみにGitと合わせて良く耳にするGitHubはGitのリモートリポジトリの管理を行うサービスのことなので、GitとGitHubは別物になります。

用語集

Gitの基本的な用語集です。プルリクなどまだ自分が理解しきれていないものについて記載していません。

リポジトリ

バージョン管理を行う場所。

リモートリポジトリ

サーバー上にあるリポジトリ。GitHubなどで作成する。

ローカルリポジトリ

ローカル(各開発PC)上にあるリポジトリ。

ワーキングツリー

ローカルリポジトリに対応する実際に作業するディレクトリ。

インデックス

ワーキングツリー内の修正した内容をローカルリポジトリに登録待ち状態にすること。

コミット

インデックスされた内容をローカルリポジトリに登録すること。

コミットコメントには修正内容や修正理由を記述する。

プッシュ

ローカルリポジトリの内容をリモートリポジトリにアップロードすること。

リモート名のデフォルトは「origin」。ブランチ名のデフォルト(リモートリポジトリを作った時に最初できるブランチ)は「master」

プル

リモートリポジトリから他の開発者がプッシュした内容を自分のローカルリポジトリにダウンロードする。

ブランチ

一つのリポジトリに対して履歴の流れを分岐して記録していくためのもの。分岐したブランチは他のブランチの影響を受けないため、機能追加とバグ修正などを並行してことができる。

統合ブランチ

リリース用のブランチ。V1.0、V1.1、V2.0などのリリースバージョンがいつでも作成可能なようにしておくためのブランチ。基本的にリモートリポジトリ作成時に作成されるmasterブランチを統合ブランチとすることが多い。

トピックブランチ

機能追加やバグ修正などのある目的に対する作業を行うために作成するブランチ。複数の機能追加やバグ修正を並行で行う場合は、その分のトピックブランチを作成する。また、トピックブランチは統合ブランチから作成する。

ブランチ作成のコマンドは以下。

チェックアウト

ブランチを切り替える。切り替えたブランチの内容がローカルリポジトリにダウンロードされる。

マージ

統合ブランチにトピックブランチの内容を統合すること。

基本的な作業順序

Gitでバージョン管理を行う時の基本的な作業です。

  1. GitHubなどのサービスを使用してリモートリポジトリを作成
  2. 「git init」コマンドでローカルリポジトリを作成
  3. 「git remote add リモート名 URL」コマンドでローカルリポジトリにリモートリポジトリを登録
  4. ローカルリポジトリで開発
  5. 「git add ファイル名」コマンドでローカルリポジトリの修正内容をインデックスに登録
  6. 「git commit -m “コミットコメント”」コマンドでインデックスに登録された内容をローカルリポジトリに登録
  7. 「git push リモート名 ブランチ名」コマンドでローカルリポジトリの内容をリモートリポジトリにアップロード
  8. 4〜7を繰り返す

全体像

上記の用語を踏まえた上で、Gitの全体像を書きなぐったものになります(字が下手なのはご了承ください)。

ABOUT ME
Jyu2
【PC1台で稼ぐブロガー兼Webエンジニアを目指し中】IT情報やWebサービス、アプリなどの情報を発信/SIerで10年以上勤務→ストレスMAXで休職中→ブログとWebの学習を行い脱サラ計画中/ #30DAYSトライアル 1st完了→2nd実施中 / 日々の学習内容をブログにアウトプット / まずは月収5万円を目指す