Gitはバージョン管理システムの中で最も広く使われているツールです。このガイドでは、すべての主要なGitコマンドとそのオプション、使用タイミングを詳細に解説します。

基本設定

git config

Gitの設定を確認・変更するコマンドです。

# ユーザー名を設定
git config --global user.name "Your Name"

# メールアドレスを設定
git config --global user.email "your.email@example.com"

# 設定を確認
git config --list

使用タイミング: Gitを初めて使うとき、またはユーザー情報を変更したいとき

主要オプション:

  • --global: システム全体に適用(全リポジトリで有効)
  • --local: 現在のリポジトリのみに適用
  • --system: システム全体の設定ファイルを使用

リポジトリ操作

git init

新しいGitリポジトリを作成します。

# 現在のディレクトリをGitリポジトリとして初期化
git init

使用タイミング: 新しいプロジェクトを開始するとき

git clone

既存のリポジトリをコピーします。

# リポジトリをクローン
git clone https://github.com/user/repo.git

# 特定のディレクトリにクローン
git clone https://github.com/user/repo.git my-project

使用タイミング: 既存のプロジェクトに参加するとき

主要オプション:

  • --depth 1: 最新のコミットのみをクローン(浅いクローン)
  • --branch <name>: 特定のブランチをクローン

変更の追跡

git status

作業ディレクトリとステージングエリアの状態を表示します。

# 現在の状態を確認
git status

# 簡潔な表示
git status -s

使用タイミング: 変更を加えた後、どのファイルが変更されたか確認したいとき

git add

変更をステージングエリアに追加します。

# 特定のファイルを追加
git add file.txt

# すべての変更を追加
git add .

# インタラクティブモード
git add -i

使用タイミング: 変更をコミットする準備ができたとき

主要オプション:

  • -p: 変更を部分的に追加(パッチモード)
  • -u: 追跡中のファイルのみ追加
  • -A: すべての変更を追加(新規ファイル含む)

git commit

ステージングされた変更をリポジトリに記録します。

# コミットメッセージを指定
git commit -m "Fix bug in login feature"

# すべての変更を自動的にステージしてコミット
git commit -a -m "Quick commit"

# 直前のコミットを修正
git commit --amend

使用タイミング: 論理的にまとまった変更が完了したとき

主要オプション:

  • -m: コミットメッセージを直接指定
  • -a: 追跡中のファイルを自動的にステージ
  • --amend: 直前のコミットを修正

変更の確認

git diff

変更内容の差分を表示します。

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

# ステージングエリアとリポジトリの差分
git diff --cached

# 2つのコミット間の差分
git diff commit1 commit2

使用タイミング: 変更内容を詳細に確認したいとき

git log

コミット履歴を表示します。

# 基本のログ表示
git log

# グラフ表示
git log --graph

# 簡潔な表示
git log --oneline

# 特定のファイルの変更履歴
git log -p file.txt

使用タイミング: プロジェクトの履歴を確認したいとき

主要オプション:

  • -p: 変更内容も表示
  • --stat: 変更統計を表示
  • --since="1 week ago": 期間指定
  • --author="name": 作者指定

ブランチ操作

git branch

ブランチの作成、一覧表示、削除を行います。

# ブランチ一覧表示
git branch

# 新しいブランチ作成
git branch new-feature

# ブランチ削除
git branch -d old-branch

# 強制削除
git branch -D old-branch

使用タイミング: 新しい機能開発を始めるとき、不要なブランチを整理するとき

git checkout

ブランチの切り替えやファイルの状態を復元します。

# ブランチの切り替え
git checkout develop

# 新しいブランチを作成して切り替え
git checkout -b hotfix

# ファイルを直前のコミット状態に戻す
git checkout -- file.txt

使用タイミング: 作業ブランチを変更したいとき、誤った変更を元に戻したいとき

git merge

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

# featureブランチを現在のブランチにマージ
git merge feature

# マージコミットを作成しない
git merge --squash feature

使用タイミング: 機能開発が完了し、メインブランチに統合するとき

主要オプション:

  • --no-ff: ファストフォワードを禁止
  • --squash: すべての変更を1つのコミットにまとめる

git rebase

コミット履歴を整理します。

# 現在のブランチをmainブランチにリベース
git rebase main

# インタラクティブリベース
git rebase -i HEAD~3

使用タイミング: コミット履歴をきれいに整理したいとき

注意点: 公開済みのコミットにはリベースしないでください

リモート操作

git remote

リモートリポジトリを管理します。

# リモートリポジトリ一覧
git remote -v

# 新しいリモートを追加
git remote add upstream https://github.com/original/repo.git

# リモート情報を更新
git remote update

使用タイミング: 複数のリモートリポジトリを扱うとき

git fetch

リモートリポジトリから変更を取得します。

# リモートの全変更を取得
git fetch

# 特定のリモートから取得
git fetch origin

使用タイミング: リモートの変更を確認したいが、ローカルにはまだマージしたくないとき

git pull

リモートリポジトリから変更を取得し、現在のブランチにマージします。

# リモートの変更を取得してマージ
git pull

# リベースしながらプル
git pull --rebase

使用タイミング: リモートの最新変更をローカルに反映したいとき

git push

ローカルの変更をリモートリポジトリに送信します。

# 現在のブランチをリモートにプッシュ
git push

# 特定のブランチをプッシュ
git push origin feature

# タグをプッシュ
git push --tags

使用タイミング: ローカルの変更をチームと共有したいとき

主要オプション:

  • -u: アップストリームブランチを設定
  • --force: 強制プッシュ(注意して使用)

変更の取り消し

git reset

コミットやステージングを元に戻します。

# ステージングを解除
git reset HEAD file.txt

# 直前のコミットを取消(変更は保持)
git reset --soft HEAD~1

# 直前のコミットを取消(変更も破棄)
git reset --hard HEAD~1

使用タイミング: 誤ってコミットやステージングしてしまったとき

注意点: --hardオプションは作業内容を完全に削除するので注意

git revert

既存のコミットを打ち消す新しいコミットを作成します。

# 特定のコミットを打ち消す
git revert commit-hash

使用タイミング: 公開済みのコミットを取り消したいとき

その他の便利コマンド

git stash

作業中の変更を一時的に退避します。

# 変更をスタッシュ
git stash

# スタッシュ一覧
git stash list

# スタッシュを復元
git stash apply

# スタッシュを削除
git stash drop

使用タイミング: 作業中の変更を一時的に保存して別の作業に移りたいとき

git tag

タグを作成・管理します。

# タグ一覧
git tag

# 注釈付きタグ作成
git tag -a v1.0 -m "Release version 1.0"

# タグをリモートにプッシュ
git push origin v1.0

使用タイミング: リリースポイントをマークしたいとき

git cherry-pick

特定のコミットを現在のブランチに適用します。

# 特定のコミットを適用
git cherry-pick commit-hash

使用タイミング: 別のブランチの特定の変更だけを適用したいとき

Gitのベストプラクティス

  • 小さく意味のあるコミットを作成する
  • コミットメッセージは明確で簡潔に
  • master/mainブランチを常にクリーンに保つ
  • 機能ごとにブランチを作成する
  • プッシュする前にローカルでテストする
  • 公開済みのコミットはリベースしない

このガイドがGitの理解と活用に役立つことを願っています。定期的に参照してGitスキルを向上させましょう!