Git コマンドリファレンス
完全なGitコマンド参照マニュアル、カテゴリ別整理で迅速検索
基本コマンド(13)
現在のディレクトリに新しいGitリポジトリを作成
リモートリポジトリをローカルにクローン
浅いクローン、最新コミットのみ取得
ファイルをステージングエリアに追加
すべての変更をステージングに追加
ステージングの変更をコミット
最後のコミットを修正
リポジトリの現在状態を表示
未ステージングの変更を表示
ステージング済みの変更を表示
すべての設定を表示
グローバルユーザー名を設定
グローバルメールアドレスを設定
ブランチ管理(14)
すべてのローカルブランチを一覧
すべてのブランチ(リモート含む)を一覧
新しいブランチを作成
ブランチを削除
ブランチ名を変更
ブランチを切り替え
新規ブランチを作成して切り替え
ブランチを切り替え(Git 2.23+)
新規ブランチを作成して切り替え(Git 2.23+)
指定ブランチを現在のブランチにマージ
マージコミットを作成してマージ
現在ブランチを指定ブランチにリベース
コンフリクト解決後にリベース継続
特定コミットを現在ブランチに適用
リモート操作(10)
リモートリポジトリの詳細を表示
リモートリポジトリを追加
リモートから最新コンテンツを取得
すべてのリモートから更新を取得
リモートブランチを取得してマージ
取得してリベース
リモートリポジトリにプッシュ
強制プッシュ(注意して使用)
プッシュして上流ブランチを設定
リモートブランチを削除
変更取消(8)
ファイルをアンステージ
最後のコミットを取消、変更を保持
コミットとステージングを取消、作業ディレクトリを保持
コミットを取消、すべての変更を破棄
コミットを取消(新コミット作成)
作業ディレクトリのファイルを復元(Git 2.23+)
ファイルをアンステージ(Git 2.23+)
未追跡ファイルとディレクトリを削除
タグ管理(6)
すべてのタグを一覧
軽量タグを作成
注釈付きタグを作成
ローカルタグを削除
タグをリモートにプッシュ
すべてのタグをリモートにプッシュ
履歴表示(7)
コミット履歴を表示
簡潔なコミット履歴を表示
すべてのブランチ履歴をグラフ表示
コミット詳細を表示
各行の修正履歴を表示
すべての操作履歴を表示
問題コミットの二分探索開始
スタッシュ(7)
現在の変更をスタッシュ
メッセージ付きでスタッシュ
すべてのスタッシュを一覧
最新スタッシュを適用して削除
スタッシュを適用(削除しない)
最新スタッシュを削除
すべてのスタッシュを削除
Gitとは?
Git チートシートは、やりたい作業ごとに Git コマンドを整理したクイックリファレンスです。Git は分散型バージョン管理システムであり、各 clone が履歴を持ち、ブランチは軽量なポインターとして動き、commit はコードベースの変化を時系列で記録します。この一覧は、何をしたいかは分かっているが正確な構文を思い出せないときに役立ちます。たとえば、ステージ済み差分の確認、ブランチ作成、commit の取り消し、作業の stash、リリースタグ、リモート同期などです。ただし、これは参照資料であり、リポジトリ状態の理解の代わりにはなりません。reset --hard、clean -fd、rebase、force push は、未コミット変更、現在のブランチ、共同作業への影響を確認してから使うべきです。
使い方ガイド
早見リファレンス
- コマンドカードをクリックするとコマンドをコピーできます
- 検索ボックスで目的のコマンドを素早く見つけられます
- カテゴリタグをクリックして種類別に絞り込めます
- コマンドにカーソルを合わせると詳細な説明が表示されます
機能
応用テクニック
- git restore --staged でステージングされたファイルを解除できます
- git commit --amend で直前のコミットを修正できます
- git stash で作業の一時保存ができます
- git revert でプッシュ済みのコミットを元に戻せます
利用シーン
仕組み
ローカルの変更は3つの領域を流れます。作業ディレクトリ、インデックス(ステージングエリアとも呼ばれ、.git/indexに格納)、そしてオブジェクトデータベースです。git addはblobハッシュをインデックスに記録し、git commitはインデックスを新しいツリーおよびコミットオブジェクトとしてフリーズし、git checkout/switchはインデックスと作業ツリーをターゲットコミットに更新します。マージは2つのカテゴリに分かれます。fast-forwardはターゲットが直接の子孫である場合に単にブランチポインタを前進させますが、3-wayマージ(recursiveまたはort戦略)は共通の祖先を計算し、2つの親を持つマージコミットを構築します。git rebaseはコミットを新しいベースに1つずつリプレイして履歴を書き換え、新しいSHAを生成します。
リモート同期はHTTPSスマートプロトコル、SSH、または非推奨のgit://プロトコルを介して実行され、デルタ圧縮で生成されたパックファイルを交換します。フェッチ後、Gitはrefs/remotes/origin/*の下にスナップショットを格納し、.git/logs/のreflogはデフォルトで90日間のアンドゥトレイルを保持します(gc.reflogExpire)。そのため、reset --hardやrebaseの失敗でも、ガベージコレクションが到達不能オブジェクトを削除する前に回復可能です。
- オブジェクトモデル: blob、tree、commit、tag -- SHA-1(または2.29以降はSHA-256)によるコンテンツアドレッシング、.git/objects/xx/にルーズ格納または.git/objects/pack/*.packにパック格納
- インデックス/ステージング: .git/indexはパス→blobハッシュ+stat情報のバイナリマッピング。git addが更新、git commitがツリーにフリーズ
- リフとHEAD: refs/heads/<branch>、refs/remotes/<remote>/<branch>、refs/tags/<tag>はSHAを含むプレーンファイル。HEADは現在ブランチへのシンボリックリフ
- マージ戦略: ターゲットが子孫の場合はfast-forward、それ以外はマージベースを使った3-way recursive/ortマージ。--no-ffでマージコミットを強制
- リベースの履歴書き換え: git rebaseがコミットを新しいベースにリプレイして新しいSHAを生成。プッシュ済みの共有履歴を壊すため--forceより--force-with-lease推奨
- リフログからの復元: .git/logs/HEADと個別リフログが90日間のリフ移動を保持(gc.reflogExpire)。git reflogとgit resetで破壊的操作後に復元
- トランスポート: スマートHTTPS、SSH、またはgit://がupload-pack/receive-packプロトコルでパックファイルをネゴシエート。浅いクローンは--depthで履歴を制限
使用例
新しいブランチを作成して切り替え
git checkout -b feature/login # 新しいブランチを作成して切り替え作業ディレクトリの変更を取り消し
git restore filename # ファイルを最後のコミット状態に復元コミット履歴の表示
git log --oneline --graph --all # 全ブランチの履歴をグラフィカルに表示よくある質問
直前のコミットを取り消すにはどうすればよいですか?
git reset --soft HEAD~1 は変更をステージしたままにして再コミットできるようにします。git reset --mixed HEAD~1 は作業ツリーに残しますがアンステージします。git reset --hard HEAD~1 は変更を破棄します。コミットがすでにプッシュされている場合は、代わりに git revert HEAD を使用してください。履歴を書き換えずに変更を取り消す新しいコミットを作成します。
git pull と git fetch の違いは何ですか?
git fetch はリモートからローカル参照にコミットをダウンロードするだけで、作業ブランチには触れません。git pull は git fetch の後に git merge(または --rebase が設定されている場合は git rebase)を実行するのと同等です。アップストリームの変更を統合する前に確認したい場合は fetch を使用してください。
ファイルのローカル変更を破棄するにはどうすればよいですか?
git restore <file> は作業ツリーの未コミット編集を破棄します。git restore --staged <file> は内容を失わずにファイルをアンステージします。git checkout HEAD -- <file> は最新コミットのバージョンに復元します。未追跡ファイルには git clean -f または -fd(ディレクトリも削除)を使用してください。
rebase と merge はどちらを使うべきですか?
プライベートな機能ブランチをマージし戻す前に線形の履歴にしたい場合は rebase を使用します。実際の開発履歴を保持することが重要な共有ブランチを統合するときは merge を使用します。共有ブランチにすでにプッシュされたコミットを rebase することは、全員の合意がない限り絶対にしないでください。SHA を書き換え、他の人のクローンを壊します。
プッシュされる予定の内容を確認するにはどうすればよいですか?
git log @{u}.. はアップストリームにないブランチのコミットを表示します。git diff @{u} は統合された差分を表示します。fetch 後の git status はリモートと比較して、何コミット先行・遅れているかを示します。
削除したブランチや失ったコミットを復元するにはどうすればよいですか?
git reflog は HEAD があったすべての位置を一覧表示します。失ったコミットの SHA を見つけて、git checkout <sha> または git branch <name> <sha> を実行してください。reflog のエントリはガベージコレクション前にデフォルトで約 90 日間保持されるため、ミスの後はすぐに対処してください。
コミットを修正する最も安全な方法は何ですか?
git commit --amend を使用すると、最新コミットのメッセージを編集したり、忘れたファイルを追加したりできます。SHA を書き換えるため、まだプッシュされていないローカルコミットでのみ実行してください。プッシュ済みのコミットを修正する必要がある場合は、--force ではなく --force-with-lease でプッシュして、チームメンバーの更新を上書きしないようにしてください。