Git入門:バージョン管理の基本

この資料では、ソフトウェア開発で広く使われているバージョン管理システムであるGitの基本的な使い方を学びます。

Gitを使うことで、コードの変更履歴を効率的に管理し、チームでの開発をスムーズに進めることができます。


Gitとは?

Gitは、Linus Torvalds氏(Linuxの開発者)によって開発された、分散型バージョン管理システムです。


Gitを始める前に:インストール

Gitを使用するには、まずお使いのコンピュータにGitをインストールする必要があります。

インストール後、ターミナルまたはコマンドプロンプトで以下のコマンドを実行し、バージョンが表示されれば成功です。

git --version

Gitの初期設定

Gitを使い始める前に、自身の情報を設定しておきましょう。これは、コミット(変更履歴の記録)を行う際に、誰が変更したかを記録するために必要です。

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

補足: --global オプションは、この設定がコンピュータ上のすべてのGitリポジトリに適用されることを意味します。特定のプロジェクトだけで異なる設定を使いたい場合は、--global を付けずにそのプロジェクトのディレクトリ内で設定します。


基本的なGitワークフロー

Gitを使った開発の基本的な流れは以下のようになります。

  1. リポジトリを作成またはクローンする
  2. ファイルを変更する
  3. 変更をステージングする(コミットの準備)
  4. 変更をコミットする(履歴に記録)
  5. リモートリポジトリと同期する(プッシュ/プル)

1. リポジトリの作成またはクローン

新しいリポジトリを作成する (git init)

既存のフォルダをGitで管理したい場合、そのフォルダ内で以下のコマンドを実行します。

cd path/to/your/project
git init

これにより、プロジェクトフォルダ内に .git という隠しフォルダが作成され、Gitがそのフォルダ内の変更を追跡し始めます。

既存のリポジトリをクローンする (git clone)

GitHubなどのリモートリポジトリからプロジェクトのコピーをローカルに取得する場合に使用します。

git clone [リモートリポジトリのURL]

例:

git clone https://github.com/ユーザー名/リポジトリ名.git

これにより、指定されたリポジトリ名のフォルダが作成され、その中にプロジェクトのすべてのファイルとGitの履歴がダウンロードされます。

2. ファイルの変更

プロジェクト内のファイルを自由に編集します。

3. 変更をステージングする (git add)

ファイルを変更したら、その変更を次のコミットに含める準備をします。この状態を「ステージングエリアに追加する」と言います。

# 特定のファイルをステージングする
git add filename.txt

# 複数のファイルをステージングする
git add file1.txt file2.js

# すべての変更をステージングする(注意して使用)
git add .

git add . は、カレントディレクトリ以下の全ての新規ファイルと変更されたファイルをステージングします。意図しないファイルまで含めないよう注意しましょう。

4. 変更をコミットする (git commit)

ステージングエリアにある変更を、リポジトリの履歴として正式に記録します。コミットには、その変更が何を意味するかを説明するメッセージを必ず含めます。

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

良いコミットメッセージの例:

5. リモートリポジトリと同期する

ローカルの変更をリモートに送る (git push)

ローカルでのコミットをGitHubなどのリモートリポジトリにアップロードします。これにより、チームメンバーと変更を共有できます。

git push origin master

通常、初めてプッシュする際には git push -u origin master のように -u (--set-upstream) オプションを付けて、ローカルブランチとリモートブランチを紐付けます。2回目以降は git push だけでOKです。
近年では、master の代わりに main というブランチ名が使われることが多いです。ご自身のプロジェクトに合わせて置き換えてください。

リモートの変更をローカルに取り込む (git pull)

他のメンバーがリモートリポジトリにプッシュした変更を、自分のローカルリポジトリに取り込みます。

git pull origin master

重要: 作業を開始する前や、コミットをプッシュする前には、常に git pull を実行して最新の状態にしておくことを強く推奨します。これにより、マージコンフリクト(競合)を未然に防ぎやすくなります。


その他の便利なコマンド

現在の状態を確認する (git status)

現在のリポジトリの状態(変更されたファイル、ステージング済みのファイル、追跡されていないファイルなど)を確認できます。作業の途中で頻繁に使うコマンドです。

git status

変更内容を確認する (git diff)

ファイルの変更内容を詳細に確認できます。

# ワークディレクトリとステージングエリアの差分
git diff

# ステージングエリアと最新コミットの差分
git diff --staged

コミット履歴を確認する (git log)

これまでのコミット履歴を一覧表示します。

git log

# 簡潔に表示
git log --oneline

# グラフ形式で表示(ブランチの流れも分かる)
git log --graph --oneline --all

変更を取り消す

ステージングを取り消す (git restore --staged / git reset HEAD)

ステージングエリアからファイルを取り除きます。ファイルの内容自体は変更されません。

git restore --staged filename.txt
# または(古いバージョンでよく使われた)
git reset HEAD filename.txt

変更を破棄する (git restore / git checkout)

作業ディレクトリで行った変更を破棄し、最新のコミット時点の状態に戻します。この操作は元に戻せないので注意してください。

git restore filename.txt
# または(古いバージョンでよく使われた)
git checkout -- filename.txt

注意: git resetgit revert など、さらに強力な「元に戻す」コマンドもありますが、これらは履歴を書き換えたりするため、理解せずに使うと問題を引き起こす可能性があります。特にチーム開発では慎重に使いましょう。


ブランチの基本

ブランチは、既存のコードの流れから分岐して、独立した作業を行うための機能です。これにより、メインの開発ラインを邪魔することなく、新機能開発やバグ修正を行えます。

ブランチの一覧表示 (git branch)

ローカルにあるブランチの一覧と、現在作業しているブランチ(アスタリスクで表示)を確認します。

git branch

新しいブランチの作成 (git branch)

現在のブランチから新しいブランチを作成します。

git branch feature/new-feature

ブランチの切り替え (git checkout / git switch)

作業するブランチを切り替えます。

git checkout feature/new-feature
# または(新しいバージョンで推奨)
git switch feature/new-feature

新しいブランチを作成し、すぐにそのブランチに切り替えたい場合は、git checkout -b feature/new-feature (または git switch -c feature/new-feature) とすると便利です。

ブランチの統合 (git merge)

別のブランチの変更を現在のブランチに統合します。

# まず、統合したいブランチに切り替える(例:masterまたはmainブランチ)
git switch master

# その後、変更を取り込みたいブランチをマージする
git merge feature/new-feature

マージ時にコンフリクト(競合)が発生することがあります。これは、同じファイルの同じ箇所を複数のブランチで異なる変更をした場合に起こります。その際は、手動でファイルを編集して競合を解消し、再度コミットする必要があります。

ブランチの削除 (git branch -d)

マージ済みのブランチを削除します。

git branch -d feature/new-feature

まだマージされていないブランチを強制的に削除したい場合は、-D オプションを使います (git branch -D feature/new-feature)。ただし、これは変更が失われる可能性があるため注意が必要です。


まとめ

この資料では、Gitの基本的な概念と主要なコマンドについて学びました。

Gitは非常に強力なツールですが、最初は複雑に感じるかもしれません。実際に手を動かし、繰り返し練習することで、徐々に慣れていきます。GitHubやGitLabなどのサービスと連携することで、より便利にチーム開発を進められます。

目次へ戻る