すべてのチートシート

Git コマンドチートシート

日常的に使う Git コマンドを素早く参照:init、clone、branch、merge、rebase、reset、stash、リモート操作、履歴の閲覧、よく使うオプションと実用例をまとめました。

31 コマンド

はじめに

git init

現在のディレクトリに新しい Git リポジトリを作成します。

git init my-project
git clone <url>

リモート リポジトリを履歴ごとローカルにコピーします。

--depth 1 (シャロー クローン、最新コミットのみ); -b <branch> 指定ブランチのみ

git clone -b main --depth 1 https://github.com/user/repo.git
git config

ユーザ名・メールなどの設定を行います。--global で全リポジトリに適用されます。

git config --global user.name "Your Name" && git config --global user.email "[email protected]"

日常の操作

git status

作業ツリーの状態(変更・ステージ・未追跡)を表示します。

-s 短縮形式; -b ブランチ情報も表示

git status -sb
git add <file>

次のコミットに含める変更をステージします。

-A すべての変更; -p 対話的にハンクを選択; -u 追跡済みファイルのみ

git add -p src/index.ts
git commit

ステージされた変更をコミット メッセージと共に記録します。

-m メッセージを直接指定; -a 追跡ファイルをステージしてコミット; --amend 直前のコミットを書き換え

git commit -am "fix: 空入力を処理"
git diff

作業ツリー、ステージ、コミット間の行レベルの差分を表示します。

--staged 直前のコミットとの差分; <branch> ブランチとの差分; --stat 概要のみ

git diff --staged --stat
git restore <file>

コミットしていない作業ツリーの変更を取り消します(--staged でステージ取り消し)。

git restore --staged src/index.ts

ブランチ

git branch

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

-d 削除; -D 強制削除; -m リネーム; -a リモートブランチも表示

git branch -m old-name new-name
git switch <branch>

別のブランチに切替。-c を付けると必要に応じて作成(checkout のモダン版)。

git switch -c feature/login
git merge <branch>

別のブランチを現在のブランチにマージします。

--no-ff 常にマージ コミットを作成; --abort 進行中のマージを取り消す

git merge --no-ff feature/login
git rebase <branch>

現在のブランチのコミットを別ブランチ先端に再適用し、線形履歴を作ります。

-i 対話的(squash/reword/reorder); --abort 中断; --continue 解決後に続行

git rebase -i HEAD~3

リモート

git remote -v

設定済みのリモート リポジトリと URL を一覧表示します。

git remote add origin https://github.com/user/repo.git
git fetch

リモートからオブジェクトと参照を取得するだけで、マージは行いません。

--prune 古いリモート追跡ブランチを削除; --all すべてのリモートから取得

git fetch --prune origin
git pull

リモートから取得し、現在のブランチへマージ(または rebase)します。

--rebase merge の代わりに rebase; --ff-only fast-forward のみ

git pull --rebase origin main
git push

ローカル コミットをリモート リポジトリへアップロードします。

-u 上流追跡を設定; --force-with-lease 安全な強制プッシュ; --tags タグも送信

git push -u origin feature/login

取り消し・修正

git reset

HEAD を他のコミットへ移動します。必要に応じてステージ/作業ツリーも更新します。

--soft 変更をステージに残す; --mixed(既定) 変更は作業ツリーに; --hard すべて破棄

git reset --hard HEAD~1
git revert <commit>

指定したコミットを打ち消す新しいコミットを作ります。共有履歴に対して安全です。

git revert HEAD
git commit --amend

最新のコミットを書き換えます:メッセージ修正や漏れ変更の追加に。

--no-edit メッセージはそのまま

git commit --amend --no-edit
git clean

作業ツリーから未追跡ファイルを削除します。

-n ドライラン; -f 強制; -d ディレクトリも対象; -x 無視ファイルも対象

git clean -ndx

履歴・参照

git log

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

--oneline 1コミット1行; --graph ブランチ図; -p diff を表示; -n 表示数を制限

git log --oneline --graph -15
git show <commit>

コミットのメッセージと diff を表示。タグやファイルにも使えます(git show HEAD:file)。

git show HEAD~2 --stat
git blame <file>

ファイルの各行について、最終変更者とコミットを表示します。

-L n,m 指定行範囲のみ

git blame -L 10,20 src/index.ts
git reflog

HEAD の移動履歴を表示します。誤った reset/rebase の後に失ったコミットを復旧できます。

git reflog -20

Stash

git stash

未コミットの変更を一時退避して、作業ツリーをきれいな状態に戻します。

-u 未追跡も含める; push -m メッセージ; list すべての stash を表示

git stash push -u -m "wip: ログイン フォーム"
git stash pop

最新の stash を再適用し、stash リストから削除します。

apply stash 項目を残して再適用

git stash apply stash@{1}

タグ・リリース

git tag

リリース ポイントを表すタグを操作します。

-a 注釈付きタグ; -m メッセージ; -d 削除

git tag -a v1.2.0 -m "Release 1.2.0"
git describe --tags

現在のコミットから到達できる最新のタグと距離を表示します。

git describe --tags --always

上級

git cherry-pick <commit>

指定したコミットの変更を現在のブランチへ適用します。

-n 適用のみ(コミットしない); -x 元コミット ハッシュをメッセージに記録

git cherry-pick -x a1b2c3d
git bisect

二分探索でバグ混入コミットを特定します。

start / bad / good / run <cmd> / reset

git bisect start && git bisect bad && git bisect good v1.0.0
git worktree add <path> <branch>

同じリポジトリを共有しつつ、別ディレクトリに別ブランチをチェックアウトします。

git worktree add ../hotfix hotfix/urgent-bug

チートシート バージョン 1.0.0

Git 2.30+ に対応