Gitとは?できることや基本用語・コマンドをやさしく解説

Gitとは?できることや基本用語・コマンドをやさしく解説

CHOIJINHWAN

CHOIJINHWAN

こんにちは、テクニカルディレクターのチェです。

今回は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で管理できるようになります。

shell
git init

git add

変更内容をコミットするための準備として、ワークツリー(作業ディレクトリ)からインデックス(ステージングエリア)にファイルを登録するコマンドです。

以下の形式で使用します。

shell
git add <ファイル名>

 
ちなみに、すべての変更を追加する場合は、「.」を使います。下記のコマンドを実行すると、カレントディレクトリ内のすべての変更をaddすることができます。

shell
git add .

git commit

編集事項があるファイルをインデックスからGitに登録するコマンドです。

下記のコマンドを実行すると、コミットメッセージを入力できるテキストエディタが開かれます。そこにコミットメッセージを入力するとOKです。

shell
git commit

また、’-m’オプションを使用することで、コミットメッセージを書くこともできます。

shell
git commit -m "コミットメッセージ"

 
基本的な作業の流れは以下の通りです。

  1. まず、ファイルを編集する。
  2. git addコマンドを使用して、編集したファイルをインデックスへ追加する。
  3. git commitコマンドを使用して、インデックスにあるファイルをリポジトリに登録します。
    コミットを実行したら、変更箇所やメッセージが一緒に登録されることになります。

git push

ローカルリポジトリで変更したファイルやディレクトリを、リモートリポジトリに反映させる操作です。

‘git push’を使用することで、他のチームメンバーとコードの共有ができるようになり、ペア作業ができるようになります。

shell
git push <リモート名><ブランチ名>

git branch

ブランチの作成、削除、一覧表示などを行うためのコマンドです。

ブランチコマンドの書き方について説明していきます。

ブランチの作成:

shell
git branch <ブランチ名>

ブランチの削除:

shell
git branch -d <削除したいブランチ名>

ブランチ一覧の表示:

shell
git branch

git checkout

作業するブランチを切り替えるためのコマンドです。異なるブランチで作業を続けたい場合に使用します。

shell
git checkout <ブランチ名>

Gitを使う際の注意点

git push -fは十分な相談のあとに使用する。

git push -fまたは、git push –forceを使う際には十分な相談後、注意して使用する必要があります。

このコマンドは強制プッシュという意味で、他の作業者の作業履歴が上書きされ、消えてしまう可能性があります。そのため、使用する際は必ずチーム内で相談し、影響範囲を十分に確認してから実行するようにしましょう。

大容量ファイルの取り扱い

Gitは主にソースコードの管理を目的としているため、大容量のバイナリファイル(画像、動画、実行ファイルなど)の管理には適していません。これらのファイルをGitで管理すると、リポジトリのサイズが肥大化し、クローンやプッシュの時間が大幅に増加する原因となります。

大容量ファイルを扱う場合は、Git LFSなどの専用ツールの使用を検討しましょう。

コミットメッセージは明確に

「修正」「更新」といった曖昧なメッセージは避け、何をどのように変更したのか、なぜその変更が必要だったのかがわかるように記述しましょう。

まとめ

今回はGitの意味や基本的なコマンドについて説明しました。こちらのコマンドや用語が理解していれば作業を行う上で基本的には問題ないと思います。

しかし、上記以外にもより詳細な機能がたくさんあり、作業中必要になる場合もあるのでこれから徐々に学んで行きましょう。

また、GitのGUIツールを活用し、直感的により簡単に操作をする方法もあるので活用してみてください。

この記事のシェア数

Technology部のCoEチームに所属し、大手企業のシステム開発業務に従事。最近はPHPのLaravelに関心を寄せている。専門学校時代にHTML、CSS、Java、PHPなどのWebに関するスキルを習得し、卒業後にLIGに新卒入社。

このメンバーの記事をもっと読む
10年以上の開発実績があるLIGが、最適な開発体制や見積もりをご提案します
相談する サービス概要を見る