Git CUIチートシート|基本操作・ブランチ運用・マージ手順まで体系整理

CUI操作に慣れたつもりでも、いざという場面で「あれ、何のコマンドだっけ?」と手が止まることがある。テンプレート100本以上を作り込む中で、ChatGPTにgit操作の一部を任せた際、「merge」と「rebase」の出力が毎回変わることに気づいた。その揺らぎを検証する過程で、やはり人の側も“構造的な理解”を持っておく必要があると痛感した。
この記事は、そうした経験を踏まえ、「Git CUIの基本操作から応用までを、実務で使える構造で整理」することを目的に書きました。手元の自分用の備忘録としても、コマンドの意味を再確認したいときのリファレンスとしても、役立つ一枚になるはずです。
Git CUIの意義と使いどころ

GUIツールに慣れていても、CUI操作が必要になる場面は確実に存在します。
筆者自身も普段はForkを使っているものの、CIトラブル調査やSSH先での作業時には「結局CUIが一番確実だった」と再認識することが多々あります。
CUI操作が重要な理由
- どんな環境でも通用する
→ GUIが使えないサーバーでも、CUIなら確実にGit操作が可能。 - CI/CDの自動処理のトラブル調査に必須
→ 実行ログや履歴の追跡では、git log
やdiff
を手で打って確認するしかない場面がある。 - スクリプトによる一括処理が可能
→ 複数リポジトリを対象とした一括更新やバックアップなど、CUIなら自動化が容易。
GUIでは見えにくい「Gitの動作原理」が分かる
CUIで操作することで、Gitの仕組みそのものがよく見えるようになります。
たとえば rebase
や reset
のような履歴操作は、GUIの抽象化では把握しにくく、コマンド実行を通じて初めて「何がどう動いているか」が実感できるようになります。
Git基本操作ガイド【初学者向け】

Gitをこれから使い始める人や、実務で「基本だけ押さえておきたい」人に向けた操作ガイドです。
このセクションでは、初期設定〜コミット〜履歴確認といった、一連の流れをシンプルに紹介します。
リポジトリ初期化とユーザー設定
- リポジトリの作成(初期化)
git init
で.git
フォルダが作成され、ローカルリポジトリが開始されます。 - ユーザー名とメールの設定(初回のみ)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
- ※ –global (グローバル設定)すれば全リポジトリ共通。個別に設定することも可能です。
- ※ リポジトリごとに別のユーザー情報を設定の場合は、
--global
を外してリポジトリ内で実行します。
ステージングとコミットの基本
- 変更状況の確認 →
git status
追跡対象か、ステージ済みか、未コミットかが一覧で分かります。 - 変更の追加
– ファイル単体:git add ファイル名
– 一括追加:git add .
- コミットの作成
git commit -m "変更内容の説明"
ローカルリポジトリに履歴が記録されます。
状態確認と履歴調査の基本
- 履歴一覧の確認
git log
で全履歴、git log --oneline
で簡易表示が可能。 - 差分の確認
– 作業中の差分:git diff
– 1つ前との比較:git diff HEAD~1
- 特定ファイルだけの履歴を追う
git log ファイル名
で、ファイル単位の変更履歴を確認できます。
このセクションで登場した基本コマンド一覧
操作目的 | コマンド例 | 概要(何をするか) |
---|---|---|
リポジトリを作る | git init | .git フォルダを生成して新しいローカルリポジトリを開始 |
ユーザー設定(名前) | git config --global user.name "名前" | コミット履歴に記録するユーザー名を指定 |
ユーザー設定(メール) | git config --global user.email "アドレス" | コミット履歴に記録するメールアドレスを指定 |
状態を確認する | git status | 変更・ステージ・未追跡ファイルの状態を表示 |
変更をステージする | git add ファイル名 / git add . | 対象ファイルをコミット対象(ステージ)に追加 |
コミットを作成する | git commit -m "メッセージ" | ステージ済みの変更を履歴として保存 |
差分を確認する | git diff / git diff HEAD~1 | 作業中や過去のコミットとの差分を表示 |
履歴を確認する | git log / git log --oneline | コミット履歴を詳細または簡易表示 |
ファイル単位の履歴 | git log ファイル名 | 特定ファイルだけの変更履歴を追跡 |
ブランチの作成・切り替え・管理

Gitのブランチは、「作業の分岐点」を柔軟に作れる強力な機能です。
機能ごとの開発、バグ修正の切り分け、他の作業への影響を防ぐために活用されます。
ここでは、ブランチの作成・切り替え・確認・削除といった基本操作に加え、git switch
の登場による操作の変化も整理します。
ブランチの作成と切り替え
- ブランチを作るだけ:
git branch feature/login
→ ブランチは作成されるが、まだ切り替わっていない状態。 - 作成と同時に切り替える:
git checkout -b feature/login
→ こちらのほうが一般的。1コマンドで切り替えまで完了。 - 既存ブランチに移動:
git checkout main
またはgit switch main
→ Git 2.23以降はswitch
が推奨。 - 新しいブランチへ切り替えつつ作成:
git switch -c feature/signup
→-c
は--create
の略。安全かつ直感的なコマンド。
ブランチ一覧・削除・リモート操作
- ローカルのブランチ一覧:
git branch
→ 現在のブランチには*
マークが付く。 - リモートブランチも含めて表示:
git branch -a
→remotes/origin/ブランチ名
のように表示される。 - ローカルブランチを削除:
git branch -d feature/login
→-D
で未マージでも強制削除可能。 - リモートブランチを削除:
git push origin --delete feature/login
checkout / switch / restore の使い分けチャート
Git 2.23以降では、機能を明確に分けた新コマンドが登場しました。
- ブランチの切り替え専用 →
git switch
- ファイルの復元専用 →
git restore
- 従来の統合型コマンド →
git checkout
用途がはっきり分かれてきたため、初心者にも安心して使える構造に進化しています。
ブランチ操作コマンド チートシート
操作内容 | コマンド例 | 補足 |
---|---|---|
ブランチを作成(切り替えなし) | git branch ブランチ名 | ただ作るだけ。移動しない。 |
作成して切り替え | git checkout -b ブランチ名 | 古くからの定番方法 |
Git 2.23以降の新方式 | git switch -c ブランチ名 | -c は --create の略 |
既存ブランチに切り替え | git switch ブランチ名 | 安全で直感的 |
ブランチ一覧 | git branch | * が現在のブランチ |
リモート含む一覧 | git branch -a | remotes/origin/〜 で表示 |
ローカルブランチ削除 | git branch -d ブランチ名 | -D で強制削除 |
リモートブランチ削除 | git push origin --delete ブランチ名 | 誤操作に注意 |
git switch の使い方をケーススタディで理解する
Git 2.23以降で登場した git switch
は、ブランチの切り替え専用コマンドです。
従来の git checkout
と比べて操作が明確に分離され、より直感的に扱えるようになりました。
ここでは具体的な操作シーンをもとに、git switch
の活用パターンを整理します。
ケース1:既存の main ブランチに移動したい
状況:
作業ブランチにいたが、元の main ブランチに戻りたい。
対応コマンド:git switch main
結果:
作業ブランチから main
に切り替わる。
ステージされていない変更があるとエラーや警告が出ることがあるため、事前に git status
の確認が安心。
ケース2:新しい作業用ブランチを作って切り替えたい
状況:main
ブランチから feature/login
というブランチを新規作成し、そこへすぐ移動したい。
対応コマンド:git switch -c feature/login
結果:feature/login
という新しいブランチが作成され、そのまま移動する。-c
は --create
の省略形で、新規ブランチ作成を意味する。
ケース3:誤って checkout を使いそうになる
状況:
従来の経験で git checkout
を打ちかけたが、switch の方が安全だと気づいた。
対応判断:
git checkout
は切り替えとファイル復元を兼ねるため、誤操作のリスクがあるgit switch
は「ブランチ専用」なので、操作ミスを防ぎやすい
推奨アクション: 今後は switch
と restore
を使い分ける習慣にすることで、安全性が向上する。
ケース4:作業内容が未保存で切り替えができないとき
状況:
変更中のファイルがある状態でブランチを切り替えようとしたらエラーが出た。
対応手順:
git status
で状態を確認git stash
で変更を一時退避git switch 目的のブランチ名
で切り替え
ポイント: switch
は未コミットの変更があると切り替えを拒否する仕様。
切り替え前に stash
しておくのが安全策。
git switch コマンド チートシート
git switch
の基本操作を目的別に一覧で整理しました。旧来の checkout
との違いも併せて確認できます。
操作内容 | コマンド例 | 補足 |
---|---|---|
既存ブランチへ切り替え | git switch ブランチ名 | checkout より安全 |
新しいブランチを作成して切り替え | git switch -c ブランチ名 | -c は --create の略 |
変更があると切り替え拒否 | git switch 実行時にエラー | git stash で退避を |
ステータス確認 | git status | 切り替え前の状態確認 |
旧方式(非推奨) | git checkout ブランチ名 | 復元操作と混在しやすい |
git restore の使い方をケーススタディで理解する
Git 2.23以降で登場した git restore
は、ファイルの変更取り消しに特化した直感的なコマンドです。ここでは実際の操作シーンを想定しながら、具体的な使い方と注意点を整理します。
ケース1:作業中のファイル変更を取り消したい(未ステージ)
状況:index.html
を変更して保存したが、「やっぱりこの変更は不要だった」と気づいた。
対応コマンド:git restore index.html
結果:
作業ディレクトリの index.html
が最後のコミット状態に戻る。ステージされていない変更だけが対象。
注意: 一度実行すると、変更内容は元に戻せない(undoできない)ため、本当に不要かを事前に確認しておくのが安心。
ケース2:git add してしまったけど、やっぱりステージを取り消したい
状況:main.css
を git add
したが、まだコミットしたくない。
対応コマンド:git restore --staged main.css
結果:
ステージ領域から main.css
が外れ、再び「変更済み・未ステージ」の状態に戻る。作業内容はそのまま保持される。
補足: 同じことは git reset HEAD main.css
でも可能。ただし restore
のほうが目的別に整理されていてわかりやすい。
ケース3:両方の取り消し(ステージと作業内容の両方)
状況:app.js
に変更を加え、git add
もしてしまったが、すべてなかったことにしたい。
対応コマンド:git restore --source=HEAD --staged --worktree app.js
結果:
コミット時点までファイルが完全に戻る。作業ツリーとステージ両方を巻き戻す操作。
注意: 明示的で安全な巻き戻しだが、強力なため慎重に扱う。
ケース4:GUIと併用していたが、差異が出て混乱したとき
状況:
SourceTreeやForkなどのGUIツールで変更が混在し、どのファイルを戻すか迷ってしまった。
対応方法:
git status
で状態確認- 戻したいファイルに対して
git restore ファイル名
ポイント: git restore
はファイル単位で部分的に巻き戻しできるので、GUIで追えない細かい操作に向いている。
git restore コマンド チートシート
Git 2.23以降で導入された git restore
の使い分けを一覧表にまとめました。状況に応じて安全に操作できるよう、目的別に整理しています。
操作内容 | コマンド例 | 補足 |
---|---|---|
作業ディレクトリの変更取り消し | git restore ファイル名 | 最後のコミット時点に戻す(未ステージのみ対象) |
ステージング取り消し | git restore --staged ファイル名 | git reset HEAD 相当/変更内容は残る |
両方取り消し(完全巻き戻し) | git restore --source=HEAD --staged --worktree ファイル名 | コミット時点まで完全に戻す/慎重に使う |
複数ファイルをまとめて戻す | git restore . | カレントディレクトリ以下すべて対象 |
復元可能な対象を確認 | git status | restore 実行前に必ずチェック |
リモート操作と同期の基本

Gitのローカル操作に慣れてきたら、いよいよ「リモートとの連携」が必要になります。
GitHubやGitLabなどの共有リポジトリを使うことで、チーム開発やバックアップ、自動デプロイが可能になります。
このセクションでは、リモートリポジトリの接続・取得・同期の基本操作を整理します。
リモートリポジトリの操作
- クローン(初回取得)
git clone https://github.com/user/repo.git
→ 指定URLのリモートリポジトリを丸ごと複製します。 - 登録済みリモート一覧を見る
git remote -v
→origin
などの名前付きURLを確認できます。 - 新しくリモートを登録
git remote add origin URL
→origin
という別名でリモートを登録。 - 不要なリモート設定を削除
git remote remove origin
→ リモートURLが間違っていたときなどに使います。
リモートとの同期:push / pull / fetch の違い
- push(ローカルの変更を送信)
git push origin main
→ 自分の変更をリモートのmain
ブランチへ反映。 - pull(リモートの変更を取得&統合)
git pull origin main
→ 最新の変更を取り込み、自動的にマージも行われます。 - fetch(取得だけして差分確認)
git fetch origin
→ ローカルの履歴には反映せず、差分を確認したいときに便利。
リモート操作コマンド チートシート
操作内容 | コマンド例 | 補足 |
---|---|---|
リポジトリをクローン | git clone URL | リモートから丸ごと取得(初回のみ) |
リモートを確認 | git remote -v | 登録済みのURL一覧を表示 |
リモートを追加 | git remote add origin URL | origin という別名で登録 |
リモートを削除 | git remote remove origin | 登録ミスなどの修正に使う |
リモートにプッシュ | git push origin ブランチ名 | ローカルの変更を送信 |
リモートからプル | git pull origin ブランチ名 | 変更を取得&マージ |
フェッチ(差分のみ) | git fetch origin | 履歴には反映せず、取得のみ |
マージ vs リベース【実務視点】

複数ブランチでの作業を統合する際、Gitでは主に2つの手段があります:マージ(merge)とリベース(rebase)。
どちらも目的は「変更の統合」ですが、履歴の扱いや使うタイミングに大きな違いがあります。
このセクションでは、それぞれの特徴・利点・注意点を、実務に沿って解説します。
merge:分岐と統合の履歴を明示したいときに使う
- 基本コマンド:
git merge ブランチ名
- 特徴:
– マージコミットが履歴に残る(分岐と統合の形が明確に可視化)
– チームでの作業やコードレビューで履歴が追いやすい
– コンフリクト発生時は手動で解決し、add
→commit
が必要 - 向いている場面:
– 複数人での開発
– レビューや監査などで「誰がどの変更を統合したか」を履歴で残したい場合
rebase:履歴をシンプルに整理したいときに使う
- 基本コマンド:
git rebase ブランチ名
- 特徴:
– 履歴が1本に繋がる(分岐が見えなくなる)
– コミットが再作成されるため、共有リポジトリに対して使うと危険
–-i
オプションでコミットの並べ替えや結合も可能(インタラクティブリベース) - 向いている場面:
– ソロ開発やPull Request前の履歴整理
– 他人と共有していない、自分のローカルブランチ
どちらを使う? 判断基準まとめ
シチュエーション | merge が向いている | rebase が向いている |
---|---|---|
チーム開発/複数人の履歴を可視化したい | ✅ 履歴に統合経路を残したい | ❌ 履歴が書き換わるため不向き |
ソロ開発/履歴をきれいに整理したい | ❌ マージコミットが増えるだけ | ✅ 意味のある単位で整理できる |
共有リポジトリで作業中 | ✅ 安全に統合可能 | ❌ 使うと履歴がずれてトラブルに |
merge / rebase コマンド チートシート
操作内容 | コマンド例 | 補足 |
---|---|---|
マージの実行 | git merge ブランチ名 | 現在のブランチに統合する |
マージ後の競合確認 | git status | コンフリクト箇所を表示 |
コンフリクト解消と確定 | git add . → git commit | 手動で修正後に確定 |
リベースの実行 | git rebase ブランチ名 | 対象ブランチの直後に履歴を再接続 |
リベース中の解決処理 | git rebase --continue | 競合解決後に続行 |
リベース中断 | git rebase --abort | リベース開始前に戻す |
インタラクティブ操作 | git rebase -i HEAD~3 | 直近3コミットを並べ替え・結合可能 |
履歴整理・復元・巻き戻し

作業中の変更を一時退避したいとき、誤ってコミットした内容を取り消したいとき、過去の状態に戻したいとき。Gitはこれらの状況にも柔軟に対応できる仕組みを持っています。ここでは、履歴操作や一時退避を行う際に使う主要コマンドと、注意点をまとめます。
stash での一時退避
作業中の変更を一時的に避けておきたい場合に活用できるのが git stash
です。
- 変更中の作業を保存し、作業ツリーをクリーンに戻す
- あとで再適用(stash pop / apply)することが可能
- 複数のstashを一覧で確認(stash list)、個別に参照(stash show)・削除(stash drop)できる
利用シーン例:
緊急のバグ修正対応などで、現在の作業を一時中断したいとき
変更をコミットする前に、別ブランチで試したいとき
revert, reset の違いと使い分け
履歴の巻き戻しには大きく2つの方法があります。それぞれの特徴と用途を理解しておくことが重要です。
git revert の特徴:
指定したコミットの変更を“打ち消す”新しいコミットを作成する。履歴を保ちつつ、論理的に取り消したいときに有効。チーム作業時に安全。
git reset の特徴:
HEADやブランチのポインタを指定したコミットに戻す。戻し方には –soft / –mixed / –hard の3種類がある。
--soft
:コミットだけ戻す(ステージング内容は残る)--mixed
:ステージングも解除(作業ディレクトリは維持)--hard
:作業内容ごと完全に巻き戻す(注意!)
使い分けの指針:
公開リポジトリやチーム作業中は revert
を推奨。ローカルで自分の作業を整理したい場合は reset
を活用。
reflog 活用法
Gitには表向きの履歴とは別に、「過去のHEADの移動履歴」を記録する git reflog
という仕組みがあります。
- 削除したブランチや失ったコミットの“入口”を見つけられる
git reset
と組み合わせて、過去の状態に戻すことが可能
具体例:
誤って git reset --hard
してしまったが、戻したいgit checkout
で古い状態を探したい
注意:reflogはローカル限定。一定期間が過ぎると消えるため、早めの復元が肝心です。
操作内容 | コマンド例 | 補足 |
---|---|---|
変更の一時退避 | git stash | 作業中の変更を一時退避 |
一時退避一覧の確認 | git stash list | 一時退避内容を一覧表示 |
一時退避の復元 | git stash apply | 一時退避を現在の作業に復元 |
一時退避の削除 | git stash drop | 指定のstashを削除 |
変更の取り消し(revert) | git revert <コミットID> | 指定コミットを打ち消す新しいコミットを作成 |
履歴を巻き戻す(reset) | git reset --hard <コミットID> | 指定の履歴位置まで完全に戻す(注意) |
過去のHEADを確認(reflog) | git reflog | HEADの移動履歴を確認できる |
reflogからの復元 | git reset --hard <reflog番号> | 過去の状態に戻したいときに使用 |
タグ管理の基礎

Gitにおける「タグ(tag)」は、特定のコミットに名前を付けて記録する機能です。リリースの節目や重要な変更点に対して、わかりやすい目印を付けることで、履歴を参照しやすくなります。
タグの作成・削除・表示(tag, show, push, –tags)
- タグの作成
git tag v1.0.0
現在のコミットにv1.0.0
という軽量タグを付ける - 注釈付きタグ
git tag -a v1.0.0 -m "Initial release"
コメント情報付きの正式なタグ - タグ一覧を確認
git tag
- タグの詳細を表示
git show v1.0.0
- タグの削除
git tag -d v1.0.0
- リモートにタグをプッシュ
git push origin v1.0.0
- ローカルの全タグを一括プッシュ
git push origin --tags
特定のコミットとタグを紐付ける方法
タグは任意のコミットに付けることもできます。git tag v1.0.0 <コミットID>
のように、履歴の中の任意のコミットに対して設定できます。
使いどころ例:
・安定版リリースの区切り
・ホットフィックスの直前後を明示
・検証用スナップショットの保存
タグは変更履歴の「固定点」として、後から見返す際の大きな助けになります。CI/CDパイプラインでは、タグをトリガーとして自動デプロイを実行する構成も一般的です。
操作内容 | コマンド例 | 補足 |
---|---|---|
タグの作成(軽量) | git tag v1.0.0 | 現在のコミットに軽量タグを付ける |
タグの作成(注釈付き) | git tag -a v1.0.0 -m "Initial release" | 注釈付きでタグを記録する |
タグ一覧を表示 | git tag | ローカルに存在するタグ一覧を確認 |
タグ詳細を確認 | git show v1.0.0 | タグが指すコミットの詳細を表示 |
タグの削除 | git tag -d v1.0.0 | ローカルタグを削除 |
タグを個別プッシュ | git push origin v1.0.0 | 個別のタグをリモートに送信 |
タグを一括プッシュ | git push origin --tags | 全ローカルタグをリモートに送信 |
特定のコミットにタグ付与 | git tag v1.0.0 <コミットID> | 任意の過去コミットにタグを付ける |
操作フローの具体例(main→作業ブランチ→マージ)

仮想ケース:あなたはWebサービスのフロントエンド開発を担当中。本番ブランチ(main)から「ログインフォームのデザイン修正」を行い、作業完了後にmainへ統合したいとします。
このような場面で、Gitを使ってブランチを切り、作業を進め、最終的にmainへマージするまでの基本フローをSTEP形式で整理しました。初学者にも理解しやすい構成となっています。
mainブランチからログインフォーム修正用のブランチを新規作成します。git switch -c fix-login-ui
ログインフォームのデザインを調整し、変更をステージ・コミットします。git add .
git commit -m "ログインフォームのUIを調整"
mainブランチに戻り、修正を統合します。git switch main
git merge fix-login-ui
実務で役立つGit応用テクニック集
Gitの基本操作に慣れてきたら、もう一歩踏み込んだ“実務的なコマンド”を覚えておくと、いざというときに役立ちます。このセクションでは、チーム開発やバグ調査、作業効率化の観点から、使用頻度の高い応用コマンドをチートシート形式で紹介します。
特定コミットだけ取り込む:git cherry-pick
別ブランチの特定コミット1件だけを取り込みたいときに使います。バグ修正やホットフィックス対応時によく登場します。
git cherry-pick <コミットID>
指定コミットの内容が現在のブランチに適用されます。
バグ原因を絞り込む:git bisect
「どのコミットでバグが入ったか」を二分探索で探せるコマンド。長期間の履歴の中から原因を効率的に特定できます。
git bisect start
git bisect bad
git bisect good <古い正常なコミット>
未追跡ファイルを一掃:git clean
コンパイル生成物やテスト用ファイルなど、Git未追跡の不要ファイルを削除したいときに便利です。
git clean -fd
-f
(強制)と -d
(ディレクトリ含む)に注意。
複数ブランチを並行作業:git worktree
1つのリポジトリから別ディレクトリにブランチを展開して作業できる機能。mainとfeatureブランチを同時に扱いたい場面で重宝します。
git worktree add ../dir-name ブランチ名
ショートカット化:alias 設定
Gitコマンドに短縮名を付けて素早く操作可能にします。例:git st
で status
を呼び出せるように。
git config --global alias.st status
git config --global alias.co checkout
知っておきたい便利オプション集
git diff --cached
:ステージとの差分確認git log --graph --oneline
:履歴の構造を視覚化git fetch --prune
:削除されたリモートブランチを整理
応用コマンド チートシート
操作内容 | コマンド例 | 補足 |
---|---|---|
特定コミットを適用 | git cherry-pick <コミットID> | 別ブランチの変更を1件だけ取り込む |
バグの原因を絞り込む | git bisect | 二分探索で「どこで壊れたか」を調査 |
未追跡ファイルを削除 | git clean -fd | 強制削除なので慎重に。-n で確認可 |
複数ブランチを展開 | git worktree add ../dir ブランチ名 | 異なるブランチを別ディレクトリで操作 |
コマンドに別名を付ける | git config --global alias.st status | よく使うコマンドを短縮化 |
ステージとの差分確認 | git diff --cached | コミット前の差分チェックに便利 |
履歴を構造表示 | git log --graph --oneline | 分岐やマージの様子が視覚的にわかる |
不要なリモート追跡を整理 | git fetch --prune | 削除されたリモートブランチの整理に |
よくあるトラブルと解決Q&A

Gitを使っていて、戸惑いやすい場面、間違えやすい操作に関する質問と回答をまとめました。初心者から中級者まで「一度は出くわす」トラブルを中心に構成しています。
