git
Git 2.30+日常的に使う Git コマンドを素早く参照:init、clone、branch、merge、rebase、reset、stash、リモート操作、履歴の閲覧、よく使うオプションと実用例をまとめました。
31 コマンド
はじめに
git init現在のディレクトリに新しい Git リポジトリを作成します。
git init my-projectgit clone <url>リモート リポジトリを履歴ごとローカルにコピーします。
--depth 1 (シャロー クローン、最新コミットのみ); -b <branch> 指定ブランチのみ
git clone -b main --depth 1 https://github.com/user/repo.gitgit configユーザ名・メールなどの設定を行います。--global で全リポジトリに適用されます。
git config --global user.name "Your Name" && git config --global user.email "[email protected]"日常の操作
git status作業ツリーの状態(変更・ステージ・未追跡)を表示します。
-s 短縮形式; -b ブランチ情報も表示
git status -sbgit add <file>次のコミットに含める変更をステージします。
-A すべての変更; -p 対話的にハンクを選択; -u 追跡済みファイルのみ
git add -p src/index.tsgit commitステージされた変更をコミット メッセージと共に記録します。
-m メッセージを直接指定; -a 追跡ファイルをステージしてコミット; --amend 直前のコミットを書き換え
git commit -am "fix: 空入力を処理"git diff作業ツリー、ステージ、コミット間の行レベルの差分を表示します。
--staged 直前のコミットとの差分; <branch> ブランチとの差分; --stat 概要のみ
git diff --staged --statgit restore <file>コミットしていない作業ツリーの変更を取り消します(--staged でステージ取り消し)。
git restore --staged src/index.tsブランチ
git branchブランチの一覧・作成・削除を行います。
-d 削除; -D 強制削除; -m リネーム; -a リモートブランチも表示
git branch -m old-name new-namegit switch <branch>別のブランチに切替。-c を付けると必要に応じて作成(checkout のモダン版)。
git switch -c feature/logingit merge <branch>別のブランチを現在のブランチにマージします。
--no-ff 常にマージ コミットを作成; --abort 進行中のマージを取り消す
git merge --no-ff feature/logingit 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.gitgit fetchリモートからオブジェクトと参照を取得するだけで、マージは行いません。
--prune 古いリモート追跡ブランチを削除; --all すべてのリモートから取得
git fetch --prune origingit pullリモートから取得し、現在のブランチへマージ(または rebase)します。
--rebase merge の代わりに rebase; --ff-only fast-forward のみ
git pull --rebase origin maingit pushローカル コミットをリモート リポジトリへアップロードします。
-u 上流追跡を設定; --force-with-lease 安全な強制プッシュ; --tags タグも送信
git push -u origin feature/login取り消し・修正
git resetHEAD を他のコミットへ移動します。必要に応じてステージ/作業ツリーも更新します。
--soft 変更をステージに残す; --mixed(既定) 変更は作業ツリーに; --hard すべて破棄
git reset --hard HEAD~1git revert <commit>指定したコミットを打ち消す新しいコミットを作ります。共有履歴に対して安全です。
git revert HEADgit commit --amend最新のコミットを書き換えます:メッセージ修正や漏れ変更の追加に。
--no-edit メッセージはそのまま
git commit --amend --no-editgit clean作業ツリーから未追跡ファイルを削除します。
-n ドライラン; -f 強制; -d ディレクトリも対象; -x 無視ファイルも対象
git clean -ndx履歴・参照
git logコミット履歴を表示します。
--oneline 1コミット1行; --graph ブランチ図; -p diff を表示; -n 表示数を制限
git log --oneline --graph -15git show <commit>コミットのメッセージと diff を表示。タグやファイルにも使えます(git show HEAD:file)。
git show HEAD~2 --statgit blame <file>ファイルの各行について、最終変更者とコミットを表示します。
-L n,m 指定行範囲のみ
git blame -L 10,20 src/index.tsgit reflogHEAD の移動履歴を表示します。誤った reset/rebase の後に失ったコミットを復旧できます。
git reflog -20Stash
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 a1b2c3dgit bisect二分探索でバグ混入コミットを特定します。
start / bad / good / run <cmd> / reset
git bisect start && git bisect bad && git bisect good v1.0.0git worktree add <path> <branch>同じリポジトリを共有しつつ、別ディレクトリに別ブランチをチェックアウトします。
git worktree add ../hotfix hotfix/urgent-bug関連コマンド速查
商標と利用についての告知
本コマンドラインツール・チートシート集はオープンコミュニティの参考資料です。本書で言及するツールの名前、ロゴ、商標(Git™、Docker™、Kubernetes®、kubectl、PostgreSQL®、MySQL®、Redis™、MongoDB®、Linux™、PowerShell™、Vim™ など)はすべてそれぞれの権利者の財産であり、本書では識別および参照の目的のみに使用しています。
本チートシートの全内容は独立して作成された簡略化された自己完結型の参考資料であり、いかなる公式ドキュメントにも所属せず、承認されておらず、また引用されたものでもありません。コマンド一覧、オプションフラグの説明、コード例はすべて著者による独自の簡略化です。権威ある情報については、各ツールの公式ドキュメントを参照してください。
コマンドの構文およびオプションフラグはツールのバージョンによって異なる場合があります。表示されるバージョンタグは安定リリースを示しています。他のバージョンでは動作が異なる場合があります。本書は商標権者による推奨や選好を意味するものではありません。
商標権者または著作権者の方で、当サイトの一部内容について権利侵害の懸念がある場合は[email protected]までご連絡ください。有効な権利証明を受領次第、合理的な期間内に関連内容を修正または削除いたします。
当サイトの情報を利用したことで生じたいかなる直接的・間接的損害についても、当サイトは法的責任を負いません。
Git について
Git は Linus Torvalds が 2005 年 4 月に BitKeeper のライセンス問題をきっかけに作成した、無料でオープンソースの分散型バージョン管理システムです。もともとは Linux カーネルのソースツリーを管理するために書かれました。すべての作業ディレクトリが履歴を持つ完全なリポジトリとなり、コミット・分岐・マージはローカルで行われ、`git push` するまでサーバに届きません——これが Git の速さとオフラインで動作する理由の源です。現在の安定版は Git 2.40+。Git は内容アドレス可能なファイルシステム(SHA-1、SHA-256 へ移行中)でデータを保持し、`commit`・`tree`・`blob`・`tag` の 4 種類のオブジェクトを持ちます。インデックスによるステージング、安価なブランチ、リベース、bisect、サブモジュール、worktree、GPG/SSH 署名付きコミットなどをサポートします。ソースコード管理の実質的な標準として、オープンソースプロジェクトと企業の両方で使われています。履歴・ブランチ・コラボレーションが必要なすべての場面で使うべきツールで、レビュー前に `git rebase -i` でコミットを整理し、`git reflog` で「消えた」作業を復元できます。コミットしていない秘密情報はアップロードしませんが、コミットしたものはすべて覚えているので、公開リポジトリにプッシュする前に `git filter-repo` で機密データを消してください。
チートシート バージョン 1.0.0