こんにちは、テクニカルディレクターのチェです。
今回はGitについて説明していきます。Gitの基本概念から実践的なコマンドの使い方まで、バージョン管理の基礎をわかりやすく解説していきます。
こんな方におすすめです。
- プログラミング学習を始めたばかりの方
- バージョン管理の基礎を学びたい方
- チーム開発に参加することになった方
GitはITエンジニアでしたら必須の知識になりますので、今回の記事でGitの基礎を学びましょう。
目次
Gitとは?
Gitとは複数人で開発をしていく上でソースコードなどを管理する、分散型バージョン管理システムです。
Gitを使うことで、複数人の人が同時に開発することができたり、ファイルやディレクトリの修正部分を共有したりすることができます。
GitHubとの違い
「Git」と「GitHub」は初心者の方でしたら混同しやすいですが、この2つは同じものではありません。
- Git:バージョンを管理するツールの名前。
- GitHub:Webサービスの名前。Gitを利用したホスティングサービスで、コードの共有やコラボレーションのためのプラットフォームのこと。
Gitの主な機能とメリット
Gitを使うことでできることやメリットをご紹介します。
バージョン管理
ファイルやディレクトリの変更履歴を時系列で管理する機能です。
Gitを使うと、ソースコードだけではなく、画像ファイルや動画ファイルなどさまざまなファイルを管理することができます(ただし、大容量ファイルの管理には別途Git LFSなどの仕組みが推奨されます)。
これにより、開発におけるすべての変更履歴を確認でき、必要に応じて過去の状態に戻すことも可能です。
メリット
- 「file_20241118_ver2」といったファイル名での管理が不要
- 間違ったコードを上書きしても変更履歴から復元できる
- 誰が、いつ、どこを編集したかの情報を簡単に追跡できる
分散型リポジトリとチーム開発
分散型リポジトリとは、ソースコードや関連ファイルを保管・管理するためのシステムです。分散型であるため、各開発者が完全なリポジトリのコピー(クローン)を持つことができ、オフラインでも作業が可能です。変更履歴の参照や新しい変更の追加も、ローカル環境で行うことができます。
また、リモートリポジトリと連携することもできます。リモートリポジトリとはインターネット上に存在するプロジェクトのことであり、これにより、地理的に離れた場所にいるチームメンバーとも、プロジェクトの共有やバージョン管理をすることができます。
メリット
- 地理的に離れたチームでも効率的な協業が可能
- 簡単なコマンドで変更の共有が可能(git pull, git pushなど)
- プロジェクト全体の進捗状況の把握がしやすい
ブランチ管理
Gitではブランチを使うことで、一つのプロジェクトで複数人の開発者が、異なる機能の追加や修正などの作業ができるようになります。
各ブランチは独立しており、これによって複数人でも安全な開発を行うことができます。ブランチ間の統合(マージ)も可能です。
メリット
- 安全な機能開発や試行ができる
- 本番環境に影響を与えずに新機能の開発ができる
- 複数の作業を効率的に進められる
Gitの基本用語
Gitの基本的な用語を説明していきます。
リポジトリ
リポジトリとはファイルやディレクトリの変更履歴を記録する場所です。Gitでは主に「ローカルリポジトリ」と「リモートリポジトリ」の2種類のリポジトリが存在します。
ローカルリポジトリ
開発者が自分のPC上で管理するリポジトリです。インターネットに接続されていない環境で、コードの変更を記録(コミット)したり、新しい機能開発用のブランチを作成したりすることができます。
ただし、ローカルリポジトリでの作業内容は、プッシュするまで他の開発者には共有されません。
リモートリポジトリ
GitHub、GitLab、Bitbucketなどのサービス上に置かれた、チームで共有するリポジトリです。ローカルでの作業内容をリモートリポジトリにプッシュすることで、チームメンバーと成果物を共有することができます。また、他のメンバーの作業内容をプルして取得することもできます。
ブランチ
開発作業を分岐させる機能です。メインのプロジェクト(通常はmainブランチ)から独立した作業環境を作ることで、既存の機能に影響を与えることなく新機能の開発やバグ修正を行うことができます。
マージ
別々のブランチで行われた作業内容を統合することです。たとえば、開発者Aと開発者Bがそれぞれ異なるブランチで機能開発を行ったあと、それらの成果をメインブランチに統合する際にマージを使用します。
マージの際に競合(コンフリクト)が発生した場合は、開発者間で調整しながら解決していきます。
ワークツリーとインデックス
ワークツリー(作業ディレクトリ)は、実際にファイルを編集する場所です。一方、インデックス(ステージングエリア)は、コミットする変更内容を準備する中間領域です。
この2段階の構造により、ファイルの変更内容を選択的にコミットすることが可能になります。たとえば、複数のファイルを修正した場合でも、特定の変更のみを次のコミットに含めることができます。
Gitの基本的なコマンド
git init
新規のリポジトリを作成する際のコマンドです。実行することで、新規または既存のプロジェクトをGitで管理できるようになります。
git init
git add
変更内容をコミットするための準備として、ワークツリー(作業ディレクトリ)からインデックス(ステージングエリア)にファイルを登録するコマンドです。
以下の形式で使用します。
git add <ファイル名>
ちなみに、すべての変更を追加する場合は、「.」を使います。下記のコマンドを実行すると、カレントディレクトリ内のすべての変更をaddすることができます。
git add .
git commit
編集事項があるファイルをインデックスからGitに登録するコマンドです。
下記のコマンドを実行すると、コミットメッセージを入力できるテキストエディタが開かれます。そこにコミットメッセージを入力するとOKです。
git commit
また、’-m’オプションを使用することで、コミットメッセージを書くこともできます。
git commit -m "コミットメッセージ"
基本的な作業の流れは以下の通りです。
- まず、ファイルを編集する。
- git addコマンドを使用して、編集したファイルをインデックスへ追加する。
- git commitコマンドを使用して、インデックスにあるファイルをリポジトリに登録します。
コミットを実行したら、変更箇所やメッセージが一緒に登録されることになります。
git push
ローカルリポジトリで変更したファイルやディレクトリを、リモートリポジトリに反映させる操作です。
‘git push’を使用することで、他のチームメンバーとコードの共有ができるようになり、ペア作業ができるようになります。
git push <リモート名> <ブランチ名>
git branch
ブランチの作成、削除、一覧表示などを行うためのコマンドです。
ブランチコマンドの書き方について説明していきます。
ブランチの作成:
git branch <ブランチ名>
ブランチの削除:
git branch -d <削除したいブランチ名>
ブランチ一覧の表示:
git branch
git checkout
作業するブランチを切り替えるためのコマンドです。異なるブランチで作業を続けたい場合に使用します。
git checkout <ブランチ名>
Gitを使う際の注意点
git push -fは十分な相談のあとに使用する。
git push -fまたは、git push –forceを使う際には十分な相談後、注意して使用する必要があります。
このコマンドは強制プッシュという意味で、他の作業者の作業履歴が上書きされ、消えてしまう可能性があります。そのため、使用する際は必ずチーム内で相談し、影響範囲を十分に確認してから実行するようにしましょう。
大容量ファイルの取り扱い
Gitは主にソースコードの管理を目的としているため、大容量のバイナリファイル(画像、動画、実行ファイルなど)の管理には適していません。これらのファイルをGitで管理すると、リポジトリのサイズが肥大化し、クローンやプッシュの時間が大幅に増加する原因となります。
大容量ファイルを扱う場合は、Git LFSなどの専用ツールの使用を検討しましょう。
コミットメッセージは明確に
「修正」「更新」といった曖昧なメッセージは避け、何をどのように変更したのか、なぜその変更が必要だったのかがわかるように記述しましょう。
まとめ
今回はGitの意味や基本的なコマンドについて説明しました。こちらのコマンドや用語が理解していれば作業を行う上で基本的には問題ないと思います。
しかし、上記以外にもより詳細な機能がたくさんあり、作業中必要になる場合もあるのでこれから徐々に学んで行きましょう。
また、GitのGUIツールを活用し、直感的により簡単に操作をする方法もあるので活用してみてください。