0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【保存版】Gitコマンドまとめチートシート|初心者から実務まで

0
Posted at

はじめに

「あのgitコマンド、なんだっけ...」

開発中にgitコマンドを忘れて検索すること、よくありますよね。

この記事は ブックマークして困ったときに見返す ことを想定した、Gitコマンドのチートシートです。基本から実務でよく使うものまで網羅しています。

初期設定

最初に一度だけ設定するコマンドです。

# ユーザー名の設定
git config --global user.name "あなたの名前"

# メールアドレスの設定
git config --global user.email "your@email.com"

# デフォルトブランチ名をmainに設定
git config --global init.defaultBranch main

# 設定の確認
git config --list

# エディタの設定(VSCodeの場合)
git config --global core.editor "code --wait"

# 改行コードの自動変換(Mac/Linux)
git config --global core.autocrlf input

# 改行コードの自動変換(Windows)
git config --global core.autocrlf true

リポジトリの作成・取得

# 新規リポジトリを作成
git init

# リモートリポジトリをクローン
git clone <URL>

# ディレクトリ名を指定してクローン
git clone <URL> my-project

# 特定のブランチだけクローン
git clone -b <ブランチ名> <URL>

# 浅いクローン(直近の履歴だけ取得。高速)
git clone --depth 1 <URL>

状態確認

# 現在の状態を確認(最も使うコマンド)
git status

# 短縮表示
git status -s

# 変更差分を確認(ステージ前)
git diff

# ステージ済みの変更差分を確認
git diff --staged

# 特定ファイルの差分
git diff <ファイル名>

# ブランチ間の差分
git diff <ブランチA>..<ブランチB>

# 変更されたファイル名だけ表示
git diff --name-only

ステージング(add)

# 特定ファイルをステージ
git add <ファイル名>

# 複数ファイルをステージ
git add file1.txt file2.txt

# ディレクトリごとステージ
git add src/

# 全ての変更をステージ
git add .

# 変更・削除されたファイルをステージ(新規ファイルは除く)
git add -u

# ステージを取り消す(ファイルの変更は残る)
git restore --staged <ファイル名>

# 全てのステージを取り消す
git restore --staged .

コミット

# コミット(メッセージ付き)
git commit -m "コミットメッセージ"

# add + commitを同時に(追跡済みファイルのみ)
git commit -am "コミットメッセージ"

# 複数行のコミットメッセージ
git commit -m "1行目のタイトル" -m "2行目の詳細"

# 直前のコミットメッセージを修正
git commit --amend -m "新しいメッセージ"

# 直前のコミットにファイルを追加(メッセージ変更なし)
git add <追加ファイル>
git commit --amend --no-edit

# 空コミット(CIトリガー用など)
git commit --allow-empty -m "trigger CI"

ログの確認

# コミット履歴を表示
git log

# 1行で表示
git log --oneline

# 直近5件だけ表示
git log -5

# グラフ表示(ブランチの分岐が見える)
git log --oneline --graph --all

# 特定ファイルの変更履歴
git log <ファイル名>

# 変更内容も表示
git log -p

# 各コミットの変更ファイル一覧
git log --stat

# 特定の文字列を含むコミットを検索
git log --grep="バグ修正"

# 特定の著者のコミットだけ表示
git log --author="名前"

# 日付で絞り込み
git log --after="2026-01-01" --before="2026-02-01"

# 特定ファイルの各行の最終変更者を表示
git blame <ファイル名>

ブランチ操作

# ブランチ一覧(ローカル)
git branch

# ブランチ一覧(リモート含む)
git branch -a

# ブランチ一覧(最終コミット情報付き)
git branch -v

# 新しいブランチを作成
git branch <ブランチ名>

# ブランチを作成して切り替え
git checkout -b <ブランチ名>

# ブランチを作成して切り替え(新しい書き方)
git switch -c <ブランチ名>

# ブランチの切り替え
git checkout <ブランチ名>
git switch <ブランチ名>

# ブランチ名の変更
git branch -m <旧名> <新名>

# 現在のブランチ名を変更
git branch -m <新名>

# ブランチの削除(マージ済みのみ)
git branch -d <ブランチ名>

# ブランチの強制削除(マージ前でも削除)
git branch -D <ブランチ名>

# マージ済みブランチの一覧
git branch --merged

# 未マージブランチの一覧
git branch --no-merged

# リモートブランチをローカルにチェックアウト
git checkout -b <ローカル名> origin/<リモートブランチ名>

マージ

# 指定ブランチを現在のブランチにマージ
git merge <ブランチ名>

# マージコミットを必ず作る(--no-ff)
git merge --no-ff <ブランチ名>

# マージを中止
git merge --abort

# スカッシュマージ(複数コミットを1つにまとめてマージ)
git merge --squash <ブランチ名>
git commit -m "マージメッセージ"

リベース

# 現在のブランチをmainにリベース
git rebase main

# リベースを中止
git rebase --abort

# リベース中のコンフリクト解消後に続行
git rebase --continue

# 直近3つのコミットを整理(squash、reword等)
git rebase -i HEAD~3

注意: プッシュ済みのコミットをリベースすると、他のメンバーに影響が出ます。プッシュ前のコミットに対してのみ使いましょう。

リモート操作

# リモートリポジトリの確認
git remote -v

# リモートを追加
git remote add origin <URL>

# リモートのURLを変更
git remote set-url origin <新URL>

# リモートを削除
git remote remove <名前>

# リモートの最新情報を取得(マージはしない)
git fetch

# 全てのリモートからfetch
git fetch --all

# リモートで削除されたブランチをローカルからも削除
git fetch --prune

# リモートの変更を取得してマージ(fetch + merge)
git pull

# リベースでpull(マージコミットを作らない)
git pull --rebase

# ローカルの変更をリモートにプッシュ
git push

# 初回プッシュ(上流ブランチの設定)
git push -u origin <ブランチ名>

# リモートブランチの削除
git push origin --delete <ブランチ名>

# タグをプッシュ
git push origin <タグ名>

# 全てのタグをプッシュ
git push origin --tags

変更の取り消し・復元

# ファイルの変更を取り消す(最後のコミット状態に戻す)
git restore <ファイル名>

# 全ファイルの変更を取り消す
git restore .

# 特定コミットの状態にファイルを復元
git restore --source <コミットID> <ファイル名>

# ステージを取り消す(変更は残る)
git restore --staged <ファイル名>

# 直前のコミットを取り消す(変更はステージに残る)
git reset --soft HEAD~1

# 直前のコミットを取り消す(変更はワーキングツリーに残る)
git reset --mixed HEAD~1
git reset HEAD~1  # --mixedがデフォルト

# 直前のコミットを完全に取り消す(変更も消える。注意!)
git reset --hard HEAD~1

# 特定のコミットを打ち消す新しいコミットを作成(安全)
git revert <コミットID>

# マージコミットをrevert
git revert -m 1 <マージコミットID>

reset の違い早見表

オプション コミット ステージ ワーキングツリー
--soft 取り消し 残る 残る
--mixed 取り消し 取り消し 残る
--hard 取り消し 取り消し 取り消し

revert vs reset: revertは新しいコミットで打ち消す(安全)。resetは履歴を書き換える(プッシュ前のみ推奨)。

スタッシュ(一時退避)

# 変更を一時退避
git stash

# メッセージ付きで退避
git stash save "作業途中のログイン機能"

# 未追跡ファイルも含めて退避
git stash -u

# スタッシュ一覧
git stash list

# 最新のスタッシュを復元(スタッシュは残る)
git stash apply

# 最新のスタッシュを復元して削除
git stash pop

# 特定のスタッシュを復元
git stash apply stash@{2}

# スタッシュの内容を確認
git stash show -p stash@{0}

# 特定のスタッシュを削除
git stash drop stash@{0}

# 全てのスタッシュを削除
git stash clear

タグ

# タグ一覧
git tag

# 軽量タグの作成
git tag v1.0.0

# 注釈付きタグの作成
git tag -a v1.0.0 -m "バージョン1.0.0リリース"

# 特定コミットにタグをつける
git tag -a v1.0.0 <コミットID> -m "メッセージ"

# タグの詳細を確認
git show v1.0.0

# タグの削除
git tag -d v1.0.0

# リモートのタグを削除
git push origin --delete v1.0.0

チェリーピック

# 特定のコミットだけを現在のブランチに取り込む
git cherry-pick <コミットID>

# 複数のコミットを取り込む
git cherry-pick <コミットID1> <コミットID2>

# コミットせずに変更だけ取り込む
git cherry-pick --no-commit <コミットID>

# チェリーピックを中止
git cherry-pick --abort

.gitignore

よく使うパターン

# 特定のファイル
.env
credentials.json

# 特定の拡張子
*.log
*.tmp
*.swp

# ディレクトリ
node_modules/
dist/
build/
.idea/
.vscode/

# OS生成ファイル
.DS_Store
Thumbs.db

# 例外(無視しないファイル)
!.gitkeep
!important.log

.gitignoreの操作

# すでに追跡されているファイルを追跡対象から外す
git rm --cached <ファイル名>

# ディレクトリを再帰的に追跡対象から外す
git rm -r --cached <ディレクトリ名>

# .gitignoreが効いているか確認
git check-ignore -v <ファイル名>

コンフリクトの解消

コンフリクトが起きたら

# 1. コンフリクトファイルを確認
git status

# 2. ファイルを開いてコンフリクトを手動で解消
# <<<<<<< HEAD
# 自分の変更
# =======
# 相手の変更
# >>>>>>> branch-name

# 3. 解消したファイルをステージ
git add <ファイル名>

# 4. マージを完了
git commit

# コンフリクトマーカーが残っていないか確認
grep -r "<<<<<<" .

便利なエイリアス設定

よく使うコマンドを短縮登録できます。

# エイリアスの設定
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm "commit -m"
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.df "diff --name-only"
git config --global alias.last "log -1 HEAD"
git config --global alias.unstage "restore --staged"

使い方

git st          # git status
git co main     # git checkout main
git br          # git branch
git cm "修正"   # git commit -m "修正"
git lg          # git log --oneline --graph --all
git last        # 直前のコミットを表示
git unstage .   # 全ステージ取り消し

実務でよく使うコマンド集

朝の作業開始

git switch main
git pull
git switch <作業ブランチ>
git merge main

機能開発の流れ

git switch -c feature/add-login     # ブランチ作成
# ... コーディング ...
git add .                            # ステージ
git commit -m "feat: ログイン機能を追加"  # コミット
git push -u origin feature/add-login # プッシュ
# → GitHubでPR作成

作業の一時中断

git stash save "ログイン機能の途中"
git switch main
# ... 別の作業 ...
git switch feature/add-login
git stash pop

やらかしたとき

# 直前のコミットをなかったことにしたい(変更は残す)
git reset --soft HEAD~1

# ファイルの変更を全部なかったことにしたい
git restore .

# プッシュ済みのコミットを取り消したい(安全に)
git revert <コミットID>
git push

# 間違えてmainにコミットしてしまった
git branch <新ブランチ名>       # 今のコミットでブランチ作成
git reset --hard HEAD~1         # mainを1つ前に戻す
git switch <新ブランチ名>       # 新ブランチに移動

履歴の調査

# このバグ、いつ入った?
git log --oneline -- <バグのあるファイル>

# この行、誰が書いた?
git blame <ファイル名>

# この文字列、いつ追加された?
git log -p -S "検索文字列"

# 2つのブランチの差分ファイル一覧
git diff main..feature/xxx --name-only

まとめ:最低限覚えるコマンド TOP10

# コマンド 用途
1 git status 現在の状態確認
2 git add . 変更をステージ
3 git commit -m "msg" コミット
4 git push リモートにプッシュ
5 git pull リモートから取得
6 git switch -c <name> ブランチ作成&切替
7 git switch <name> ブランチ切替
8 git log --oneline 履歴確認
9 git diff 差分確認
10 git stash / git stash pop 一時退避&復元

まずはこの10個を使いこなせれば、日常の開発では困りません。

この記事をブックマークして、必要なときに見返してください!


著者: @kotaro_ai_lab
AI駆動開発やテック情報を毎日発信しています。フォローお気軽にどうぞ!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?