跳到主要内容
稻草人
プロフィール

EP.02

💻Technology

Git・GitHub よく使うコマンド早見表【開発用】

Git・GitHubを使った開発で、よく使用するコマンドを目的別にまとめました。 「この操作はどのコマンドだっ […]

BY 稻, 草人

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-onlyFast-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 を実行しないようにします。

よく使うオプション

オプション意味
-sshort。短い形式で表示する
-bbranch。ブランチ情報を表示する
-vverbose。詳細情報を表示する
-vvgit branch で上流ブランチなど、さらに詳しい情報を表示する
-aall。対象をすべて表示する。意味はコマンドによって異なる
-Agit add ですべての追加・変更・削除をステージする
-ccreate。git switch でブランチを作成して切り替える
-mmessage。コミットやstashのメッセージを指定する
-ppatch。変更をひとかたまりずつ選択する
-ugit push では追跡先を設定し、git stash では未追跡ファイルを含める
-ddelete。マージ済みのローカルブランチを削除する
--globalすべてのローカルリポジトリで使うユーザー設定として保存する
--get指定した設定値を取得する
--show-toplevelGitリポジトリのルートパスを表示する
--name-only変更されたファイル名だけを表示する
--statファイルごとの変更量を表示する
--cachedステージ済みの内容を対象にする
--check空白文字など、差分に含まれる問題を確認する
--amend直前のコミットを作り直す
--show-current現在のブランチ名を表示する
--deletegit push でリモートブランチを削除する
--continueコンフリクト解消後にrebaseなどを続行する
--abort実行中のrebaseなどを中止する
--stagedステージ領域を対象にする
--softgit reset でコミットだけを戻し、変更をステージ済みで残す
--mixedgit reset でコミットとステージを戻し、ファイルの変更を残す
--hardgit reset でコミットと未コミットの変更を破棄する。取り扱いに注意する
--ff-onlyFast-forwardできる場合だけ処理する
--oneline1コミットを1行で表示する
--graphコミット履歴をグラフ表示する
--decorateブランチ名やタグ名を表示する
--allすべての参照を対象にする。意味はコマンドによって異なる
--left-right2つの履歴のどちら側にあるコミットかを表示する
--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先や取り消し対象の間違いを防ぎやすくなります。