この記事の目的
こんにちは、tkmtkndです。この記事ではGitの概要をざっくり理解することが目的です。実際にGitを操作しながら覚えていったほうが知識は定着しやすいですが、「見たことある、聞いたことあるぞ!」を増やすことで、スムーズに進めていけるようにしたいです。そもそもGitとはなにか、どういう目的で使うのかの大枠を確認していきます。それと、自身への備忘録を残すために記事を書いています。
Gitとは
Gitとはソースコードや変更履歴を管理するために使われる、代表的な分散型バージョン管理システムです。Gitによってファイルのバージョンを管理できるので、仮にほかの誰かにソースコードが上書きされても、簡単に元へ戻すことができます。そのため作業者は、安心してソースコードの更新作業を行えるわけです。
そもそもバージョン管理システムとは
バージョン管理システムの役割は、ファイルの変更を管理することです。ファイルの変更を管理することで、次の効果が得られます。
- 「いつ」「誰が」「どのように」「なんのために」変更したのか、確認できる
- 間違った変更をした場合に、変更前の状態に戻すことができる
- 1つのファイルを同時に変更した場合に、効率的にマージすることができる
複数のメンバーで同じアプリケーションを開発するときなどに効果を発揮します。現代のシステム開発では、バージョン管理システムをしないプロジェクトはほぼないと思います。バージョン管理システムには、大きく分けて集中型と分散型の2種類があります。
そもそも集中型とは
集中型のバージョン管理システムは、1つのリモートリポジトリでファイルの変更履歴を管理します。各開発者はリモートリポジトリからファイルをローカルにコピーして変更を行ういます。ファイルの変更が完了後、リモートリポジトリにファイルと変更情報を反映することで、メンバー間で共有します。
そもそも分散型とは
分散型のバージョン管理システムは、リモートリポジトリに加えて、ローカル環境にもそれぞれリポジトリを持ちます。各開発者はリモートリポジトリをそのままコピーしてローカルリポジトリを作成します。その後、ローカルリポジトリからファイルをローカルにコピーして変更を行います。ファイルの変更が完了したら、ローカルリポジトリにファイルと変更情報を反映させます。さらに、ローカルリポジトリの内容をリモートリポジトリに反映することでメンバー間で変更を共有します。
Gitの用語
Gitには多くの専門用語があります。用語を自分の言葉で説明しているので、説明は参考程度にどうぞ。
用語 | 説明 |
---|---|
リポジトリ | ファイルの変更履歴を保存する場所。 |
ワークツリー | ローカル環境で作業しているフォルダ(領域)。 |
ステージングエリア | ワークツリーからリポジトリにコミットするときの中継ポイントで、ワークツリーとリポジトリの間に存在する一時領域。ステージングに登録されていないファイルはコミットできない。 |
ブランチ | ファイルの変更履歴を分岐して管理する機能。ブランチの機能によって1つのリポジトリの中で複数の作業を並行して管理することができる。分岐したブランチはマージ機能によって1つのブランチにまとめることができる。 |
クローン | リモートリポジトリをローカル環境に複製。 |
コミット | ワークツリーの変更内容をローカルリポジトリに反映。 |
プッシュ | ローカルリポジトリの変更内容をリモートリポジトリに反映。 |
チェックアウト | リポジトリから指定されたファイルを取り出し、ワークツリーに配置。 |
フェッチ | リモートリポジトリの最新の履歴を取得。 |
マージ | 複数のブランチを1つのブランチにまとめる。 |
プル | リモートリポジトリの変更内容をローカルリポジトリに取り込む。 |
リセット | ワークツリーやステージングの内容を変更。 |
Gitの作業の一連の流れ
Gitには、ローカル環境とリポジトリの間にステージングというものが存在することが最大の特徴。ワークツリーの内容を直接リポジトリにコミットせず、まずはステージングエリアに変更内容を登録する。ステージングに登録された内容は、コミット対象として管理され、コミットを実行したタイミングで、ステージングの情報を元に変更履歴をリポジトリに記録します。ステージングエリア=次のコミット対象と考えるとわかりやすいです。
参考記事