Git基本コマンドの実践操作 - add、commit、pushの正しい使い方を完全解説

2025/6/1

このサイトはアフィリエイト広告を利用しています。

目次

はじめに

Git コマンドは現代のソフトウェア開発において必須のスキルです。特にgit add、git commit、git pushの3つのコマンドは、日常的な開発作業の中核を担っています。

これらのコマンドを理解することで、ファイルの変更管理からチーム開発まで、効率的なバージョン管理が可能になります。本記事では、初心者から中級者まで役立つ実践的な使い方を、具体例とともに解説していきます。

graph LR
A[ワーキングディレクトリ] -->|git add| B[ステージングエリア]
B -->|git commit| C[ローカルリポジトリ]
C -->|git push| D[リモートリポジトリ]

  style A fill:#e1f5fe
  style B fill:#fff3e0
  style C fill:#f3e5f5
  style D fill:#e8f5e8
  

Gitワークフローの基本構造

ファイルの変更追跡とgit statusでの状態確認

Gitでの作業を始める前に、現在の状態を把握することが重要です。git statusコマンドは、ワーキングディレクトリとステージングエリアの状態を表示し、どのファイルが変更されているかを確認できます。

git statusの基本的な使い方

Terminal window
# 現在の状態を確認
git status
# 簡潔な表示形式で確認
git status -s

git statusで表示される主な状態は以下の通りです:

状態説明表示例
Untracked追跡されていない新しいファイルUntracked files: newfile.txt
Modified変更されたファイル(未ステージ)Changes not staged: modified.txt
StagedステージングされたファイルChanges to be committed: staged.txt

💪 ヒント

開発作業を始める前に必ずgit statusで現在の状態を確認する習慣をつけると、意図しないファイルのコミットを防げます。

git addによるステージング操作の詳細

git addコマンドは、ワーキングディレクトリの変更をステージングエリア(インデックス)に追加する役割を担います。このステップにより、次のコミットに含める変更を選択できます。

git addの基本的な使用方法

Terminal window
# 特定のファイルをステージング
git add filename.txt
# 複数のファイルを同時にステージング
git add file1.txt file2.txt
# 現在のディレクトリのすべての変更をステージング
git add .
# リポジトリ全体のすべての変更をステージング
git add -A

インタラクティブなステージング

Terminal window
# 変更の一部のみを選択してステージング
git add -p filename.txt
# インタラクティブモードでファイル選択
git add -i

📢 重要

git add .git add -Aの違いに注意してください。git add .は現在のディレクトリ以下のみが対象ですが、git add -Aはリポジトリ全体が対象となります。

ステージングの取り消し

誤ってステージングしたファイルは以下の方法で取り消せます:

Terminal window
# 特定のファイルのステージングを取り消し
git reset HEAD filename.txt
# すべてのステージングを取り消し
git reset HEAD

効果的なコミットメッセージの書き方とgit commit

git commitコマンドは、ステージングエリアの内容をローカルリポジトリに記録します。良いコミットメッセージを書くことは、後の開発作業やチーム連携において非常に重要です。

git commitの基本的な使い方

Terminal window
# 基本的なコミット
git commit -m "コミットメッセージ"
# ステージングとコミットを同時実行(追跡済みファイルのみ)
git commit -am "変更内容の説明"
# 詳細なコミットメッセージを作成
git commit

効果的なコミットメッセージの構成

良いコミットメッセージは以下の要素を含みます:

  1. 件名行(50文字以内) - 変更の要約
  2. 空行
  3. 本文(72文字で改行) - 変更の理由と詳細
Terminal window
# 良いコミットメッセージの例
git commit -m "feat(auth): ユーザー認証機能を追加
JWTトークンベースの認証システムを実装しました。
- ログイン/ログアウト機能
- トークンの自動更新機能
- セッション管理の改善
Fixes #123"

コミットメッセージのベストプラクティス

項目推奨非推奨
件名の書き方feat: ユーザー認証機能を追加バグ修正
時制命令形(動詞の原形)過去形や現在進行形
文字数件名50文字、本文72文字で改行制限を超える長文
内容原子的で1つの変更に焦点複数の無関係な変更を混在

💡 補足

Conventional Commitsという標準的なコミットメッセージ形式を採用すると、チーム内での一貫性が保てます。feat:, fix:, docs:などのプレフィックスを使用します。

git logでのコミット履歴確認と活用方法

git logコマンドは、コミット履歴を表示し、プロジェクトの変更の流れを把握するのに役立ちます。

git logの基本的な使用方法

Terminal window
# 基本的なログ表示
git log
# 一行で簡潔にログ表示
git log --oneline
# グラフ形式でブランチの分岐を表示
git log --graph --oneline
# 特定の期間のログを表示
git log --since="2025-01-01" --until="2025-06-01"
# 特定のファイルの変更履歴
git log -- filename.txt

ログ表示のカスタマイズ

Terminal window
# カスタム形式でのログ表示
git log --pretty=format:"%h - %an, %ar : %s"
# 統計情報付きのログ表示
git log --stat
# ファイルの変更内容も含めて表示
git log -p

💪 ヒント

git log --graph --oneline --allは、すべてのブランチの履歴を視覚的に確認できる便利なコマンドです。エイリアスとして設定しておくと効率的です。

リモートリポジトリとの連携(git push、git pull)

ローカルでの作業が完了したら、git pushでリモートリポジトリに変更を送信し、git pullで他の開発者の変更を取得します。

git pushの基本的な使い方

Terminal window
# 現在のブランチをリモートにプッシュ
git push
# 特定のブランチを指定してプッシュ
git push origin main
# 初回プッシュ時に上流ブランチを設定
git push -u origin feature-branch

git pushのオプション

Terminal window
# 強制プッシュ(注意が必要)
git push -f origin main
# より安全な強制プッシュ
git push --force-with-lease origin main
# すべてのブランチをプッシュ
git push --all origin
# タグもプッシュ
git push --tags origin

⚠️ 注意

git push -f(強制プッシュ)は、リモートの履歴を上書きする危険な操作です。チーム開発では--force-with-leaseオプションを使用し、ローカルが最新の状態でのみ強制プッシュを実行してください。

git pullによる更新取得

Terminal window
# 現在のブランチを更新
git pull
# 特定のリモートブランチから更新
git pull origin main
# リベースしながら更新
git pull --rebase origin main

プルとフェッチの違い

コマンド動作使用場面
git pullフェッチ + マージを同時実行簡単に最新状態に更新したい時
git fetchリモートの変更を取得のみ変更内容を確認してからマージしたい時
sequenceDiagram
participant L as ローカルリポジトリ
participant R as リモートリポジトリ

  Note over L,R: 基本的なGitワークフロー
  L->>L: git add (ステージング)
  L->>L: git commit (ローカルコミット)
  L->>R: git push (リモートに送信)
  R->>L: git pull (リモートから取得)
  

Gitにおけるローカルとリモートの連携フロー

.gitignoreファイルの設定と管理

.gitignoreファイルは、Gitに追跡させたくないファイルやディレクトリを指定するために使用します。これにより、不要なファイルがリポジトリに含まれることを防げます。

.gitignoreの基本的な記述方法

# コメント行
# 特定のファイルを無視
config.local.json
# 拡張子でファイルを無視
*.log
*.tmp
# ディレクトリを無視
node_modules/
.env/
# 例外の指定(!で除外を解除)
*.log
!important.log
# パターンマッチング
temp-*

言語・フレームワーク別の.gitignore例

# Node.js プロジェクト
node_modules/
npm-debug.log*
.env
dist/
# Python プロジェクト
__pycache__/
*.pyc
.pytest_cache/
venv/
# 一般的な開発環境ファイル
.DS_Store
.vscode/
.idea/
*.swp

💪 ヒント

GitHub公式のgitignore テンプレートを参考にすると、言語やフレームワークに適した設定が簡単に見つかります。

すでに追跡されているファイルを.gitignoreに追加する場合

Terminal window
# ファイルをGitの追跡から除外(ファイルは削除されない)
git rm --cached filename.txt
# ディレクトリを追跡から除外
git rm -r --cached directory/
# 変更をコミット
git commit -m "update .gitignore"

Git学習におすすめの書籍

さらなるGitスキル向上のために、レベル別におすすめの書籍をご紹介します。

🔰 初心者向け(Git未経験〜基本操作習得まで)

いちばんやさしいGit&GitHubの教本 第2版

動かして学ぶ!Git入門

わかばちゃんと学ぶ Git使い方入門

📈 中級者向け(基本操作習得済み〜チーム開発活用)

GitHub実践入門 ~Pull Requestによる開発の変革

ゼロから学ぶGit/GitHub 現代的なソフトウェア開発のために

🚀 上級者向け(内部仕組み理解〜高度な運用)

実用Git 第3版

📚 学習レベルの目安

レベル現在のスキル推奨書籍タイプ
初心者Gitコマンドを知らない図解豊富、実践重視の入門書
中級者基本操作はできるがチーム開発未経験GitHub活用、ワークフロー中心の実践書
上級者業務で使用しているが深い理解が欲しい内部仕組み、高度な運用を扱う専門書

💪 効果的な学習方法

書籍での学習と並行して、実際のプロジェクトでGitを使用することで、理論と実践の両面からスキルを向上させることができます。本記事で解説した内容も、日常的な開発作業で積極的に活用してみてください。

これらの書籍を通じて、Git 実践スキルをさらに深化させ、プロフェッショナルなエンジニアとしてのレベルアップを図りましょう。

まとめ

Git コマンドの基本操作であるgit add、git commit、git pushを正しく理解し使いこなすことで、効率的なバージョン管理が可能になります。

重要なポイントをおさらいすると:

これらのコマンドを日常的に使いこなすことで、個人開発からチーム開発まで、あらゆる場面で活用できる強固なGitスキルが身につきます。継続的な実践を通じて、より高度なGit操作にも挑戦していきましょう。


出典リスト

公式リソース(Official Resources)

参考サイト(Reference Sites)

この記事をシェアする

関連記事