ノウハウ
バージョン管理に使えるGitのリポジトリとは?基礎知識や用語と合わせて解説
2023年5月19日
プログラムコードやドキュメントの変更履歴を記載し、バージョン管理を行うシステムに「Git」があります。プログラマなら当たり前のように使用しているGitですが「まだ使っていない」「これから使おうとしている」という方も多いでしょう。
初心者だと、Gitに使用されている言葉はどれも初めて耳にするものばかりで、何のことを言っているかよくわからない、というケースもあるのではないでしょうか。
とくにGit関連で耳にするワードには「リポジトリ」というあまり耳慣れない言葉もあり、今さら「人に聞けないから」と曖昧にして、なんとなく使用している人もいるかもしれません。
この記事ではGitのリポジトリをはじめ、Gitに関する基本知識や用語について見ていきたいと思います。
目次
Gitとは?
Gitとは、プログラムコードやドキュメントの変更履歴を残すための分散型バージョン管理システムをいいます。開発時のドキュメント編集作業を行う際に、ファイルの変更履歴を管理することで、ファイルの先祖返りを引き起こさないようにできるものです。
なお、Gitと合わせて聞く言葉に「GitHub」もありますが、こちらは、Gitを利用しオンライン上で自分の作成したプログラムやデータを、管理・保存・公開できるサービスを指します。GitHubを利用すれば、複数人で開発を行う際に非常に便利です。
Gitでできることとは?
具体的にGitで管理・操作できることには、
- ファイルのバージョン管理
- ブランチ管理
- リモートリポジトリの操作
- コード比較とマージ
- 履歴の管理
- プロジェクトのバックアップ
などがあります。それぞれ見ていきましょう。
ファイルのバージョン管理
前述したとおり、Gitではファイルの変更履歴を記録して追跡することが可能です。また、複数の開発者が同時に作業することもできます。
ブランチ管理
また、Gitは複数のブランチを作成して開発を分割、並行して開発を進めることができます。大規模なプロジェクトの場合、非常に効率的な管理を行えるのが特徴です(※ブランチについては、後でくわしく説明します)。
リモートリポジトリの操作
さらにGitでは、リモートリポジトリにファイルをアップロードし、ダウンロードすることもできます。もちろん、リモートリポジトリを別の人と共有することも可能です(※リポジトリについては、後でくわしく説明します)。
コード比較とマージ
Gitは複数バージョンのコードを比較して、マージすることができます。複数の開発者が同じファイルを編集した場合の衝突を防ぎ、開発をスムーズに進めることができます(※マージについては、後でくわしく説明します)。
履歴管理
Gitでは過去のバージョンを復元したり、削除したりも可能です。コミットメッセージを利用して、変更内容や目的を文書化することもできます。
プロジェクトのバックアップ
その他、Gitではローカルリポジトリおよびリモートリポジトリに、ファイルを保存することができます。よって、プロジェクトが消えてしまったとしても、バックアップからファイルを復元することが可能です。
Gitの利用方法について
Gitを利用するには、まずローカルPCにGitをインストールする必要があります。
Gitのインストール方法は、OSや使用するパッケージマネージャーによって異なりますが、ここでは一般的なインストール方法について紹介します。
1.リポジトリの作成
まず、リポジトリ(プロジェクトのフォルダ)を作成するところからスタートです。リポジトリを作成するには、以下のコマンドを実行します。
2.ファイルの追加
作成したリポジトリにファイルを追加する場合には、以下のコマンドを実行します。
3.コミット
ファイルを変更する際は、変更内容をコミットして保存しましょう。以下のコマンドを実行すると、変更内容がコミットされます。
「コミットメッセージ」部分には、変更内容をわかりやすく説明する文言を記載してください。
4.ブランチの作成
複数人で同じファイルを変更・編集する場合には、ブランチを作成して作業を切り分けることが可能です。以下のコマンドを実行することで、ブランチが作成されます。
5.ブランチの切り替え
作業中のブランチを切り替える場合には、以下のコマンドを実行します。
6.マージ
複数のブランチで作業した成果をまとめる際には、マージを行いましょう。以下のコマンドを実行すると、現在のブランチに指定したブランチをマージすることが可能です。
リポジトリとは?
リポジトリ(Repository)とは、バージョン管理するプロジェクトのデータが保存される場所のことを指します。
Gitのリポジトリには
- リモートリポジトリ
- ローカルリポジトリ
の2種類のリポジトリがあります。
リモートリポジトリとは?
リモートリポジトリとは、サーバ上にあるデータ保存場所をいいます。
複数人が同じプロジェクトにアクセスして、ドキュメントの変更を共有することができます。リモートリポジトリは、プロジェクトにおいてバックアップを安全に行うことができることや、共有メンバーとのコラボレーションを促進する役割を果たすものです。
ローカルリポジトリとは?
ローカルリポジトリとは、自分のPC上にあるデータ保存場所をいいます。
ローカルリポジトリで作成したファイルをリモートリポジトリにアップロードし、変更を保存したり、リモートリポジトリからローカルリポジトリに最新ファイルをダウンロードして作業したりできます。
ローカルリポジトリの作成方法
ローカルリポジトリを作成する方法は2つあり、
- 新規でローカルリポジトリを作成する
- リモートリポジトリをローカルリポジトリとしてコピーする
のどちらでも作成可能です。
Gitを活用する上で知っておきたい用語
Gitを自在に使用するには、他にも知っておきたい用語が多くあります。
コミットとは?
コミット(Commit)とは、ファイルの変更履歴を記録することをいいます。変更履歴で記録される情報には、「変更時間」「担当者」「ファイル名」「変更箇所」「残しているメッセージ内容」などが保存されています。
コミットの作成方法は、以下のようなコマンドを入力して行います。
コミットの作成の後、次はコミットメッセージの作成に移ります。
- 変更内容の詳細
- 変更目的や理由
- 修正した問題の詳細(バグの修正時)
などを残しておくことで、次に編集する人が変更意図を正確に汲み取ることができます。
コミットでは以下の作業の実行が可能です。
コミットの参照
コミットは一意のハッシュ値で識別され、コミットのハッシュ値を利用してコミットを参照することが可能です。また「git log」コマンドを使用し、過去のコミット履歴を表示することもできます。
コミットの修正
不要な変更を削除する場合には、コミットを修正したりすることもできます。コミットの修正の際には、「git commit –amend」コマンドを使用して、最後のコミットを修正することが可能です。
コミットの取消
誤った変更をコミットした場合や不要なコミットを取り消す場合には、「git reset」コマンドを使用することでコミットを取り消すことができます。
ワークツリーとは?
ワークツリーとは、ローカルリポジトリ内での現在の作業ディレクトリを指します。作業しているプロジェクトの実際のファイルやディレクトリになります。
インデックスとは?
インデックスとは、Gitが管理するステージングエリアを指し、コミットする前に変更を一時的に保存する場所のことを意味します。
ワークツリー内で変更を行ったファイルは「git add」コマンドを使用してインデックスに追加することができますが、これによりGitは変更点を記録して次にコミットする際に変更を含めるように指示します。
インデックスに追加された変更内容は「git diff」コマンドを用いて現在の作業ディレクトリと比較できます。インデックスには、Gitが管理するファイルやディレクトリの変更点のみが含まれ、インデックスに追加されていないファイルやディレクトリの変更点は次のコミットに含まれません。
プッシュとは?
プッシュとは、ローカルリポジトリに保存されたコミットをリモートリポジトリにアップロードすることを指します。
ローカルリポジトリで変更を行いコミットすると、そのコミットはローカルリポジトリに保存されます。
しかし、共同でプロジェクト開発を行う場合には、変更を共有する必要があるのです。この際、ローカルリポジトリで行った変更をリモートリポジトリにプッシュすることで、変更の共有ができます。
プッシュ時には「git push」コマンドを使用して、ローカルリポジトリで行ったコミットをリモートリポジトリにプッシュすれば、他のメンバーはリモートリポジトリから最新の変更内容を取得できるようになります。
ただし、プッシュする前には他のメンバーがプッシュした変更を取得する必要があります。その際、「git pull」コマンドを使用してリモートリポジトリから最新の変更を取得、その後自身の変更をコミットしてプッシュすることができるようになります。
ブランチとは?
ブランチとは、コミットの履歴を分岐して管理するための仕組みをいいます。
ブランチを作成することで、元のコードを保持しながら新しい開発に取り組むことが可能となります。開発が完了すれば、元のブランチに変更点をマージすることで、新機能部分を元のコードに反映させることができます。
フェッチとは?
フェッチとは、リモートリポジトリから最新の変更を取得して、ローカルリポジトリに反映する操作のことをいいます。リモートリポジトリとローカルリポジトリを同期させるための操作であって、ローカルリポジトリ内の環境に直接変更を反映させるものではありません。
プルとは?
プルもフェッチ同様、リモートリポジトリから最新の変更を取得して、ローカルリポジトリに反映する操作をいいます。プルを実行することにより、フェッチとマージを別々に行わなくて済み、1つのコマンドで最新の変更を取得できます。
クローンとは?
クローンとは、リモートリポジトリをローカルレポジトリにコピーすることです。つまり、リモートリポジトリを新しいローカルリポジトリとして複製することが可能となります。またクローンを作成することで、リモートリポジトリのすべてをローカル環境にコピーすることも可能です。
新しいローカルリポジトリには、リモートリポジトリのすべてのブランチやコミットの履歴、ディレクトリなどが含まれています。
チェックアウトとは?
チェックアウトとは、ローカルリポジトリのブランチを切り替えたり、過去のコミットを取り出したりするための操作をいいます。
たとえば、今のブランチから別のブランチに切り替えるケースや、特定のコミットに移動し、そのコミットの状態を確認するケース、新しくブランチを作成して、そのブランチで開発をスタートする場合などに使用されます。
まとめ
以上、GitのリポジトリをはじめとしたGitに関する基礎知識や用語について紹介しました。一見難しそうに見えるGitですが、作業自体は普段Googleドキュメントやスプレッドシートを使用しているのと大差ありません。
慣れてしまえば非常に便利ですし、何より業務効率化が図れるので作業スピードが格段に速まることでしょう。まだGitを活用していない開発者は、ぜひ本記事を参考にGitをインストールするところからスタートしましょう。