🐙 Git と GitHub CLI

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
公開

2025年8月31日

バージョン管理、ブランチ、リモートリポジトリ、スタッシュ、タグ、そして GitHub CLI の基本および高度な Git コマンド。

🔹 基本コマンド

コマンド

説明

git add ファイルをステージ領域に追加
git add file.txt

次のコミットのために特定のファイルをステージ

git add .

現在のディレクトリ以下のすべての変更をステージ

git add -p

インタラクティブにファイルの一部をステージ (部分的なコミットに便利)

git clone リポジトリを新しいディレクトリに複製
git clone -b branch_name URL

デフォルトではなく指定したブランチのみをクローン

git clone --depth 1 URL

最新のコミットだけをクローンし、時間と容量を節約する浅いコピーを作成

git commit リポジトリに変更を記録
git commit -m "Initial commit"

エディタを開かずにメッセージ付きでコミット

git commit -a -m "Fix bugs"

変更された追跡ファイルをすべてステージしてコミット

git commit --amend

直前のコミットを更新 (メッセージ変更や追加変更を含める)

git commit --fixup abc1234

後でインタラクティブリベース中に自動的に squash される fixup コミットを作成

git config リポジトリまたはグローバルの設定を取得・変更
git config --global user.name "Name"

グローバル Git ユーザー名を設定

git config --global user.email "email@example.com"

グローバル Git メールアドレスを設定

git config --list

すべての Git 設定を一覧表示 (名前、メール、エディタなど)

git diff コミット間、コミットと作業ツリー間の変更を表示
git diff HEAD

最後のコミット以降の変更を表示 (未ステージの変更)

git diff --staged

次のコミットに含まれる変更を表示

git diff --word-diff HEAD~1

単語単位の差分を表示

git grep リポジトリ内のファイルを検索
git grep "functionName"

プロジェクト内のすべてのファイルで functionName を検索

git grep -n "TODO"

TODO を含む行を探し、行番号も表示 (コードメモの確認に便利)

git grep -i "login"

login を大文字小文字を区別せずに検索 (Login, LOGIN, login などを一致)

git init 空の Git リポジトリを作成、または既存リポジトリを再初期化
git init my-project

ディレクトリ my-project で新しいリポジトリを初期化

git init --bare

ベアリポジトリを初期化

git log コミットログを表示
git log --oneline

コンパクトな1行形式で履歴を表示

git log --graph --all

すべてのブランチを視覚的なコミットグラフで表示

git log -p --stat

コミットのパッチとファイル変更統計を表示

git reset ファイルをアンステージする (作業ディレクトリの変更は保持)
git reset HEAD file.txt

ステージからファイルを削除 (編集は保持)

git reset --hard HEAD~1

1つ前のコミットに戻り、すべての変更を削除 (元に戻せない!)

git reset --soft HEAD~1

最後のコミットを取り消し、変更は再コミット可能な状態で保持

git reset --mixed HEAD~1

コミットを取り消し、変更は作業ディレクトリに未ステージで保持

git show さまざまなオブジェクトを表示
git show <commit_hash>

特定のコミットの変更とメッセージを表示

git show HEAD~1

現在の1つ前のコミットを表示

git show --stat

最新のコミットのファイル変更の概要を表示

git status 作業ツリーの状態を表示
git status -s

短い形式で状態を表示

git status -b

現在のブランチとファイルの状態を表示

🌿 ブランチとマージ

コマンド

説明

git branch ブランチを作成・一覧表示・削除
git branch new-feature

new-feature という新しいブランチを作成

git branch -d old-feature

old-feature というローカルブランチを削除

git checkout ブランチを切り替える、または別のコミットからファイルを復元
git checkout main

main ブランチに切り替え

git checkout -b new-branch

new-branch という新しいブランチを作成して切り替え

git switch ブランチを切り替える (checkout の簡略版)
git switch main

main ブランチに切り替え

git switch -c feature-x

feature-x という新しいブランチを作成して切り替え

git switch new-feature

new-feature という既存ブランチに切り替え

git merge 他のブランチの変更を現在のブランチに統合
git merge new-feature

new-feature ブランチを現在のブランチにマージ

git merge --no-ff new-feature

常にマージコミットを作成 (たとえ fast-forward が可能でも)

git merge --abort

競合が発生した場合にマージをキャンセルして変更を元に戻す

git rebase コミットを新しいベースコミットに移動または再適用
git rebase main

自分のブランチのコミットを main ブランチの上に再適用

git rebase -i HEAD~3

直近3つのコミットをインタラクティブに編集

git rebase --abort

進行中のリベースを中止して元に戻す

git rebase -i --autosquash HEAD~5

インタラクティブリベース中に fixup/squash マーク付きコミットを自動的に squash

git cherry-pick 別ブランチの特定のコミットを適用
git cherry-pick <hash>

特定のコミット (ハッシュ指定) を現在のブランチに適用

git cherry-pick --continue

競合解決後に cherry-pick を続行

git cherry-pick A^..B

A (除外) から B (含む) までのコミット範囲を適用

📡 リモートリポジトリ

コマンド

説明

git remote リモートリポジトリ (GitHub など) へのリンクを管理
git remote -v

リモート名とその URL を表示

git remote add origin URL

origin というリモートリポジトリを追加

git pull リモートブランチから変更をダウンロードして自動的にマージ
git pull origin main

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

git pull --rebase origin main

マージではなく、現在のブランチをリモートの上にリベース

git push ローカルの変更をリモートリポジトリにアップロード
git push origin main

ローカルの main ブランチをリモート origin にプッシュ

git fetch リモートから変更をダウンロード (マージはしない)
git fetch origin

リモート origin からすべての更新を取得するが、まだ適用しない

git fetch origin main

リモートから main ブランチのみ取得

git fetch --all

すべてのリモートから更新を取得

git fetch --prune

削除されたリモートブランチのローカル参照を整理

git fetch --dry-run

実際にダウンロードせず、何が取得されるかを表示

git fetch origin +main

ローカルトラッキングブランチ (origin/main) を強制的に更新し、競合を上書き

📦 スタッシュとクリーンアップ

コマンド

説明

git stash 未コミットの変更 (作業中) を一時保存
git stash

変更済みファイルとステージ済みファイルを保存し、作業ディレクトリを最後のコミットに戻す

git stash apply

最新のスタッシュを再適用 (スタッシュは保持)

git stash pop

最新のスタッシュを再適用して削除

git stash list

すべてのスタッシュを一覧表示

git stash branch feature-fix

新しいブランチを作成し、最新のスタッシュを適用

git clean Git に含まれない未追跡ファイルを完全に削除
git clean -f

現在のディレクトリの未追跡ファイルを削除

git clean -fd

未追跡のファイルとフォルダを削除

git clean -n

削除対象をプレビュー (安全なドライラン)

🏷️ タグ

コマンド

説明

git tag 特定の履歴ポイント (リリースなど) をマークするタグを作成・一覧表示・削除
git tag -a v1.0 -m "Version 1.0"

v1.0 という注釈付きタグをメッセージ付きで作成 (リリースに適する完全 Git オブジェクト)

git tag -d v1.0

ローカルの v1.0 タグを削除 (リモートには影響なし)

git push ローカルからリモートリポジトリにコミット、ブランチ、タグをアップロード
git push origin --tags

すべてのローカルタグをリモートにプッシュ (複数バージョンのタグ後に便利)

git push origin v1.0

特定のタグ (例: v1.0) をリモートにプッシュ

git push origin :refs/tags/v1.0

リモートタグ v1.0 を削除 (コロン構文に注意)

🛠️ コンフリクト解決

コマンド

説明

git mergetool マージコンフリクトを解決するためのビジュアルツールを開く
git mergetool --tool=meld

Meld などの特定ツールを使ってコンフリクトを修正

git rerere 過去に解決したマージコンフリクトの方法を Git に記憶させる
git config --global rerere.enabled true

過去のコンフリクト解決を自動的に再利用可能にする

git rerere status

保存されたコンフリクト解決を持つファイルを表示

git rerere diff

将来の再利用用に Git が保存した変更を表示

⚙️ 高度なコマンド

コマンド

説明

git bisect バイナリサーチでバグを導入したコミットを特定
git bisect start

既知の良いコミットと悪いコミットの間でバイナリサーチを開始

git bisect bad

現在のコミットを「bad」(バグあり) とマーク

git bisect good <commit>

バグが存在しない既知の「good」コミットをマーク

git blame ファイル内の各行を最後に変更した人物を表示 (リビジョンと著者付き)
git blame file.txt

ファイル内の各行の著者とコミット情報を表示

git blame -L 10,20 file.txt

10行目から20行目のみの blame 情報を表示

git blame --show-email file.txt

行変更と一緒に著者のメールアドレスを表示

git reflog ブランチ移動や HEAD のリファレンスログ (reflog) を表示・管理
git reflog show main@{1.week.ago}

main ブランチが1週間前にどこを指していたか確認

git reflog expire --expire=30.days --dry-run

30日以上前のエントリが削除可能かをプレビュー (変更なし)

git reflog delete HEAD@{2}

特定の reflog エントリを削除 (リカバリに影響する可能性あり注意)

git submodule サブモジュール (リポジトリ内のリポジトリ) を追加・初期化・更新・確認
git submodule add URL path

外部リポジトリを指定したパスにサブモジュールとして追加

git submodule update --init

リポジトリ内のすべてのサブモジュールを初期化・ダウンロード

git submodule foreach git pull

各サブモジュール内で git pull を実行し最新コミットに更新

git submodule sync --recursive

.gitmodules の変更後にサブモジュールの URL を同期

git submodule update --remote --merge

サブモジュールをリモートブランチの最新コミットに更新

git archive 特定のコミットやブランチからファイルのアーカイブ (zip, tar など) を作成
git archive --format=zip HEAD > archive.zip

現在の HEAD からプロジェクトファイルの ZIP アーカイブを作成

git archive -o release.tar.gz HEAD

現在の HEAD から圧縮 .tar.gz アーカイブを作成

git archive --format=tar --prefix=project/ HEAD \| gzip > project.tar.gz

現在のプロジェクトの圧縮 .tar.gz アーカイブを作成し、アーカイブ内のすべてのファイルを project/ フォルダに配置

git gc 不要なファイルを削除し、リポジトリを最適化
git gc --aggressive

徹底的なクリーンアップと最適化を実行 (時間がかかるが効果的)

git gc --prune=now

すべての到達不能オブジェクトを即削除 (不明な場合は危険)

git shortlog 著者とそのコミットの簡易要約
git shortlog -e

著者とメールアドレスの一覧を表示 (誰がどれだけ貢献したか分析可能)

git shortlog -s -n

各著者が行ったコミット数を表示し、数でソート

git shortlog -sne

上記に名前とメールアドレスも含める — 詳細な活動追跡に便利

git revert 履歴を書き換えずに以前のコミットの変更を取り消す新しいコミットを作成
git revert HEAD

最後のコミットを取り消し、その変更を逆にする新しいコミットを作成

git revert <commit_hash>

ハッシュ指定の特定コミットを取り消し、それを逆にする新しいコミットを安全に追加

🐙 GitHub CLI

gh を使うとターミナルから GitHub を操作できます。

コマンド

説明

gh auth login GitHub ホストで認証し、CLI コマンドがアカウントと連携できるようにする
gh auth login --with-token < mytoken.txt

個人アクセストークンをファイル (mytoken.txt) に保存して認証

gh auth login --hostname enterprise.internal

GitHub Enterprise サーバー (github.com 以外) に認証

gh repo clone GitHub リポジトリをローカル環境にクローン
gh repo clone user/repo

user 所有のリポジトリ reporepo というフォルダにクローン

gh repo clone cli/cli -- --depth=1

最新のコミットだけをダウンロードし、高速で小さなクローンを作成

gh repo clone cli/cli workspace/cli

カスタムフォルダ workspace/cli にクローン

gh issue list GitHub リポジトリの Issue を一覧表示 (さまざまな条件でフィルタ可能)
gh issue list --assignee "@me"

自分に割り当てられた Issue を表示

gh issue list --state all

状態 (open/closed) を問わず Issue を表示

gh issue list --search "error no:assignee sort:created-asc"

“error” に一致する、担当者なし、作成日昇順の Issue を表示

gh pr create CLI 経由で GitHub にプルリクエストを作成
gh pr create --title "..."

指定したタイトルでプルリクエストを作成

gh pr create --project "Roadmap"

プルリクエストを “Roadmap” という GitHub プロジェクトにリンク

gh pr create --base develop --head monalisa:feature

フォーク monalisafeature ブランチから develop ブランチへ PR を作成

gh repo create CLI から新しい GitHub リポジトリを作成
gh repo create my-project

GitHub に my-project という新しいリポジトリを作成 (インタラクティブ入力あり)

gh repo create my-project --public --clone

公開リポジトリを作成してローカルにクローン

gh repo create my-project --private --source=. --remote=upstream

現在のフォルダからプライベートリポジトリを作成し、upstream というリモートを追加

💡 Git エイリアス (便利なショートカット)

よく使う Git コマンドのエイリアスを設定して作業を高速化:

git config --global alias.br branch                                       # ショートカット: git branch
git config --global alias.ci commit                                       # ショートカット: git commit
git config --global alias.co checkout                                     # ショートカット: git checkout
git config --global alias.graph "log --oneline --graph --all --decorate"  # 見やすい履歴グラフ
git config --global alias.last "log -1 HEAD"                              # 最後のコミットを表示
git config --global alias.st status                                       # ショートカット: git status

🚀 プロ向け高度な Git コマンド

コマンド

説明

git filter-repo Git 履歴を書き換える強力で高速なツール。ファイルや著者情報、パスを削除/変更可能。従来の git filter-branch を置き換え、より安全で高速。
git filter-repo --path secret.txt --invert-paths

git filter-branch の性能問題なしに機密ファイルやディレクトリを履歴から効率的に削除 (注意して使用)

git filter-repo --replace-text replacements.txt

リポジトリ全体の履歴で文字列やパターンを一括置換 (例: 資格情報の削除)

git filter-repo --subdirectory-filter src

サブディレクトリの履歴を新しいリポジトリに抽出し、コミットメタデータを保持

git worktree 1つのリポジトリに複数の作業ディレクトリを紐づけ、異なるブランチで同時作業を可能に (クローン不要)
git worktree add ../feature feature-branch

同じリポジトリに追加の作業ツリーを作成し、並行してブランチをチェックアウト

git worktree list

すべてのアクティブな worktree、パス、ブランチを一覧

git worktree remove ../feature

不要になった worktree を削除し、安全にディレクトリをクリーンアップ

git replace 既存オブジェクトを置き換える一時参照を作成し、履歴を破壊せずにローカルでテスト・操作可能
git replace <old_commit> <new_commit>

ローカルリポジトリで一時的にコミットを差し替え、履歴を書き換えずにテストやパッチ適用

git replace --list

アクティブな置換参照をすべて表示

git replace -d <replace_ref>

特定の置換参照を削除して動作を元に戻す

git stash 未コミットの変更をスタックに一時保存し、未完了作業をコミットせずにコンテキストを切り替え可能
git stash push -p

インタラクティブに保存する差分を選択し、細かく制御してスタッシュ

git stash push -m "WIP selective stash"

識別しやすいカスタムメッセージ付きでスタッシュを作成

git stash apply stash@{2}

スタッシュ一覧から特定のスタッシュを適用 (削除はしない)

git rebase 別のベースコミット上にコミットを再適用し、履歴をきれいに線形に整える。インタラクティブ編集も可能
git rebase --interactive --autosquash

fixup/squash マーク付きコミットを自動的に整理・結合するインタラクティブリベースを開始

git rebase -i --autosquash HEAD~10

fixup/squash コミットを自動的に整理・結合し、プッシュ前に履歴をクリーン化

git commit --fixup <commit>

インタラクティブリベースで自動的に squash される fixup コミットを作成

git commit --squash <commit>

リベース時に特定のコミットと結合される squash コミットを作成

git bisect バイナリサーチでバグを導入したコミットを効率的に特定。連続するコミットをテストし、原因を絞り込み
git bisect run

テストスクリプトを各コミットで実行し、自動でバグを導入したコミットを特定

git bisect start; git bisect bad; git bisect good v1.0; git bisect run ./test.sh

テストスクリプトによる自動二分探索でバグ特定を大幅に高速化

git bisect visualize

二分探索プロセスを可視化する GUI ツールを開く

git bisect reset

bisect モードを終了し、元の HEAD に戻る

git commit 修正、署名、fixup、メッセージカスタマイズなどの詳細オプション付きでコミットを記録し、履歴品質を維持
git commit --gpg-sign

GPG キーで署名付きコミットを作成し、真正性と著者を暗号的に検証可能

git commit -S -m "Signed commit"

GPG キーでコミットを署名し、完全性と著者確認を保証

git config --global user.signingkey <key_id>

コミット署名に使用する GPG キーをグローバル設定

git log --show-signature

コミットの GPG 署名情報を検証して表示

git reflog HEAD やブランチの更新ログを保持し、失われたコミットの復元やローカル履歴の把握に不可欠
git reset --hard HEAD@{3}

リフログからブランチを以前の状態にリセットし、変更を復元または取り消し

git reflog expire --expire=now --all

すべてのリフログエントリを即時削除し、履歴をクリーンアップ (注意)

🧰 プロ向けワークフローのヒントと自動化

トピック

コマンド / 例

解説 & プロのヒント

積極的なリポジトリクリーンアップ

git gc --aggressive --prune=now

ガベージコレクションを深く実行し、到達不能オブジェクトを即削除して最適化。メンテナンス時に使用

並行ブランチ作業ツリー

git worktree add ../feature-branch feature

複数の作業ツリーを保持して同時に機能開発を行い、クローンのオーバーヘッドを回避

クリーンで線形な履歴

git rebase -i --autosquash

プッシュ前にインタラクティブリベースと autosquash を行い、履歴を読みやすく維持

セキュアなコミット

git commit -S

コミットに GPG 署名を付与し、共有リポジトリでの信頼性を高める (多くの企業環境で必須)

自動バイセクト

git bisect run ./test-script.sh

バグ探索を自動化。テストスクリプトを各候補コミットで実行し、原因を迅速特定

コンフリクト解決キャッシュ

git config --global rerere.enabled true

過去の解決方法を再利用して、リベースやマージ時の繰り返しコンフリクト解決を高速化

共有エイリアスとフック

共通の Git エイリアスやコミットフックを共有リポジトリや CI パイプラインに保存し、チーム標準を強制して生産性向上

追加リソース

🧠 ヒント

すべてを暗記しようとせず、--help を使い、調べ、定期的に練習しましょう:

git help <command>
git status

🌐 便利なリンク

📘 公式 Git ドキュメント — すべての Git コマンドの詳細マニュアル:
https://git-scm.com/docs

📙 Learn Git Branching — ブランチ概念を習得するためのインタラクティブなビジュアルチュートリアル:
https://learngitbranching.js.org

📕 Pro Git 書籍 (無料, Scott Chacon & Ben Straub 著):
https://git-scm.com/book

📗 Git チートシート (公式簡易リファレンス):
https://education.github.com/git-cheat-sheet-education.pdf