Git・GitHubを使った開発で、よく使用するコマンドを目的別にまとめました。
「この操作はどのコマンドだったっけ?」と思ったときに、すぐ確認できる早見表です。例ではメインブランチを main、リモートリポジトリ名を origin としています。<ファイル名> や <ブランチ名> の部分は、実際の名前に置き換えてください。
最初に覚えたい基本コマンド
| やりたいこと | コマンド | 補足 |
|---|---|---|
| 現在の状態を確認する | git status -sb | ブランチ名と変更状態を簡潔に表示 |
| 変更内容を確認する | git diff | まだステージしていない変更を表示 |
| ステージ済みの変更を確認する | git diff --cached | 次のコミットに含まれる内容を表示 |
| ファイルをステージする | git add <ファイル名> | 指定したファイルだけを追加 |
| すべての変更をステージする | git add -A | 追加・変更・削除をすべて追加 |
| コミットする | git commit -m "メッセージ" | 変更をローカル履歴に保存 |
| リモートの変更を取得する | git fetch origin | 現在の作業ファイルは変更しない |
| リモートの変更を反映する | git pull --ff-only | Fast-forwardできない場合は停止 |
| GitHubへ送信する | git push | 設定済みのリモートブランチへ送信 |
よく使う基本的な流れは次のとおりです。
git status -sb
git pull --ff-only
# ファイルを編集
git diff
git add <ファイル名>
git diff --cached
git commit -m "fix: 不具合を修正"
git push
初期設定
ユーザー名とメールアドレスを設定する
git config --global user.name "ユーザー名"
git config --global user.email "メールアドレス"
設定内容を確認します。
git config --global --get user.name
git config --global --get user.email
現在のリポジトリだけ別の情報を使う場合は、--global を付けずに設定します。
git config user.name "プロジェクト用の名前"
git config user.email "project@example.com"
リポジトリの作成・取得
| やりたいこと | コマンド |
|---|---|
| 現在のフォルダをGitリポジトリにする | git init -b main |
| GitHubからリポジトリを取得する | git clone <URL> |
| リポジトリのルートを確認する | git rev-parse --show-toplevel |
git clone https://github.com/USERNAME/REPOSITORY.git
cd REPOSITORY
ローカルにあるプロジェクトを新しいGitHubリポジトリへ登録する場合:
git init -b main
git add -A
git commit -m "chore: 初回コミット"
git remote add origin https://github.com/USERNAME/REPOSITORY.git
git push -u origin main
変更内容の確認
| やりたいこと | コマンド |
|---|---|
| ファイルの状態を簡潔に確認する | git status -sb |
| 変更されたファイル名だけ確認する | git diff --name-only |
| 変更量を確認する | git diff --stat |
| 指定ファイルの変更を確認する | git diff -- <ファイル名> |
| ステージ済みの変更を確認する | git diff --cached |
| 空白文字などの問題を確認する | git diff --cached --check |
git add の後に git diff を実行して何も表示されない場合は、git diff --cached で確認します。
add・commit
| やりたいこと | コマンド |
|---|---|
| 指定ファイルをステージする | git add <ファイル名> |
| 指定フォルダをステージする | git add <フォルダ名>/ |
| すべての変更をステージする | git add -A |
| 変更を部分的に選択する | git add -p |
| コミットする | git commit -m "メッセージ" |
| 直前のコミットメッセージを修正する | git commit --amend -m "新しいメッセージ" |
コミットメッセージの例:
git commit -m "feat: お問い合わせ画面を追加"
git commit -m "fix: ログインエラーを修正"
git commit -m "refactor: 共通処理を整理"
git commit -m "docs: READMEを更新"
fetch・pull・push
| コマンド | 動作 |
|---|---|
git fetch origin | リモートの最新情報を取得する。現在のブランチには反映しない |
git pull --ff-only | リモートの変更を取得し、Fast-forwardできる場合だけ反映する |
git push origin main | ローカルの main を origin/main へ送信する |
git push -u origin <ブランチ名> | 初回pushと同時に追跡先を設定する |
初回のpush:
git push -u origin feature/contact-form
追跡先が設定されていれば、次回からは次のコマンドだけでpushできます。
git push
ブランチ操作
| やりたいこと | コマンド |
|---|---|
| 現在のブランチを確認する | git branch --show-current |
| ローカルブランチを一覧表示する | git branch |
| リモートを含めて一覧表示する | git branch -a |
| 追跡先を含めて確認する | git branch -vv |
| ブランチを作成して切り替える | git switch -c <ブランチ名> |
| ブランチを切り替える | git switch <ブランチ名> |
| マージ済みブランチを削除する | git branch -d <ブランチ名> |
| リモートブランチを削除する | git push origin --delete <ブランチ名> |
機能開発を始めるとき:
git switch main
git pull --ff-only
git switch -c feature/contact-form
開発が完了したらコミットしてpushします。
git add -A
git commit -m "feat: お問い合わせフォームを追加"
git push -u origin feature/contact-form
merge・rebase
ブランチをマージする
git switch main
git merge feature/contact-form
機能ブランチに最新のmainを取り込む
mergeを使う場合:
git switch feature/contact-form
git fetch origin
git merge origin/main
rebaseを使う場合:
git switch feature/contact-form
git fetch origin
git rebase origin/main
rebase中にコンフリクトが発生した場合:
git add <修正したファイル>
git rebase --continue
rebaseを中止する場合:
git rebase --abort
一時的に変更を退避する
| やりたいこと | コマンド |
|---|---|
| 変更を退避する | git stash push -m "メモ" |
| 未追跡ファイルも含めて退避する | git stash push -u -m "メモ" |
| 退避した内容を一覧表示する | git stash list |
| 退避内容を確認する | git stash show --stat 'stash@{0}' |
| 退避内容を戻す | git stash apply 'stash@{0}' |
| 退避内容を削除する | git stash drop 'stash@{0}' |
git stash push -u -m "ログイン画面を作業中"
git switch main
# 別の作業を実施
git switch feature/login
git stash apply 'stash@{0}'
変更を取り消す
| 状況 | コマンド | 結果 |
|---|---|---|
add を取り消す | git restore --staged <ファイル名> | ファイルの変更内容は残る |
| 未ステージの変更を破棄する | git restore -- <ファイル名> | 未コミットの変更が消える |
| 直前のコミットだけ取り消す | git reset --soft HEAD~1 | 変更はステージ済みで残る |
| 直前のコミットとステージを取り消す | git reset --mixed HEAD~1 | 変更は作業フォルダに残る |
| 共有済みコミットを打ち消す | git revert <コミットID> | 打ち消し用の新しいコミットを作成 |
git restoreやgit reset --hardは変更を失う可能性があります。実行前にgit statusとgit diffを確認してください。
コミット履歴を確認する
| やりたいこと | コマンド |
|---|---|
| 履歴を1行ずつ表示する | git log --oneline |
| 分岐を含めて履歴を表示する | git log --oneline --graph --decorate --all -20 |
| 最新のコミットを表示する | git show HEAD |
| 指定コミットを表示する | git show <コミットID> |
| 指定ファイルの履歴を表示する | git log -- <ファイル名> |
| 行ごとの変更元を確認する | git blame <ファイル名> |
| ローカル操作履歴を確認する | git reflog -15 |
リモートリポジトリを確認・変更する
| やりたいこと | コマンド |
|---|---|
| リモート名とURLを確認する | git remote -v |
| リモートを追加する | git remote add <名前> <URL> |
| リモートURLを変更する | git remote set-url <名前> <URL> |
| リモート名を変更する | git remote rename <古い名前> <新しい名前> |
| リモート設定を削除する | git remote remove <名前> |
git remote remove はローカルの接続設定を削除するコマンドです。GitHub上のリポジトリ自体は削除されません。
1つのローカルリポジトリを複数のGitHubリポジトリへ接続する
既存の origin に加えて、別のGitHubリポジトリを public という名前で追加します。
git remote add public https://github.com/USERNAME/PROJECT-PUBLIC.git
git remote -v
送信先を指定して、それぞれpushします。
git push origin main
git push public main
公開用と非公開用を分かりやすくする場合:
git remote rename origin private
git push private main
git push public main
リモートを追加しただけでは自動同期されません。pushするたびに送信先を指定します。
よくあるエラー
remote origin already exists
すでに origin が登録されています。
git remote -v
git remote set-url origin <新しいURL>
src refspec main does not match any
コミットがまだ存在しない、またはブランチ名が異なる可能性があります。
git status -sb
git branch --show-current
git log -1 --oneline
non-fast-forward
リモートにローカル未取得のコミットがある可能性があります。
git fetch origin
git log --oneline --left-right --graph main...origin/main
履歴を確認してから、mergeまたはrebaseで変更を統合します。通常の同期エラーを解決する目的で、すぐに git push --force を実行しないようにします。
よく使うオプション
| オプション | 意味 |
|---|---|
-s | short。短い形式で表示する |
-b | branch。ブランチ情報を表示する |
-v | verbose。詳細情報を表示する |
-vv | git branch で上流ブランチなど、さらに詳しい情報を表示する |
-a | all。対象をすべて表示する。意味はコマンドによって異なる |
-A | git add ですべての追加・変更・削除をステージする |
-c | create。git switch でブランチを作成して切り替える |
-m | message。コミットやstashのメッセージを指定する |
-p | patch。変更をひとかたまりずつ選択する |
-u | git push では追跡先を設定し、git stash では未追跡ファイルを含める |
-d | delete。マージ済みのローカルブランチを削除する |
--global | すべてのローカルリポジトリで使うユーザー設定として保存する |
--get | 指定した設定値を取得する |
--show-toplevel | Gitリポジトリのルートパスを表示する |
--name-only | 変更されたファイル名だけを表示する |
--stat | ファイルごとの変更量を表示する |
--cached | ステージ済みの内容を対象にする |
--check | 空白文字など、差分に含まれる問題を確認する |
--amend | 直前のコミットを作り直す |
--show-current | 現在のブランチ名を表示する |
--delete | git push でリモートブランチを削除する |
--continue | コンフリクト解消後にrebaseなどを続行する |
--abort | 実行中のrebaseなどを中止する |
--staged | ステージ領域を対象にする |
--soft | git reset でコミットだけを戻し、変更をステージ済みで残す |
--mixed | git reset でコミットとステージを戻し、ファイルの変更を残す |
--hard | git reset でコミットと未コミットの変更を破棄する。取り扱いに注意する |
--ff-only | Fast-forwardできる場合だけ処理する |
--oneline | 1コミットを1行で表示する |
--graph | コミット履歴をグラフ表示する |
--decorate | ブランチ名やタグ名を表示する |
--all | すべての参照を対象にする。意味はコマンドによって異なる |
--left-right | 2つの履歴のどちら側にあるコミットかを表示する |
--force | リモート履歴を強制的に更新する。通常の同期では使用しない |
-- | オプションの終わりを示し、後ろの値をファイルパスとして扱う |
短いオプションはまとめて記述できます。たとえば、git status -sb は git status -s -b と同じ意味です。また、git log -1、git reflog -15、git log -20 の数字は、表示する履歴の最大件数を表します。
最後に
迷ったときは、最初に次の3つを確認します。
git status -sb
git branch -vv
git remote -v
現在の変更、作業中のブランチ、接続先のリポジトリを確認してから操作すると、push先や取り消し対象の間違いを防ぎやすくなります。

