git 使い方まとめ:こういう時にこれを使う
2026-03-10
まず頭に入れる:git の基本構造
ローカルに3つの場所(作業ディレクトリ・ステージ・ローカルリポジトリ)があり、そこにリモートを加えた4か所でファイルが管理される。コマンドが何をやっているかは、これを基準に考えると整理される。
| 場所 | 意味 |
|---|---|
| 作業ディレクトリ | 実際にファイルを編集している場所 |
| ステージ | 「次のコミットに含める変更」を一時的に置く場所 |
| ローカルリポジトリ | 自分のPCに保存された履歴 |
| リモート | GitHubなどのサーバー上の履歴 |
シーン別コマンド一覧
毎日使う
| やりたいこと | コマンド |
|---|---|
| 今の状態を確認 | git status |
| 変更をステージに上げる | git add ファイル名 または git add . |
| コミットする | git commit -m "メッセージ" |
| リモートに送る | git push |
| リモートから取り込む | git pull |
add と commit は別操作。「何をコミットするか選ぶ」のが add、「確定させる」のが commit。
確認したい
| やりたいこと | コマンド |
|---|---|
| 履歴を見る | git log --oneline |
| 変更の差分を見る(ステージ前) | git diff |
| 変更の差分を見る(ステージ後) | git diff --staged |
| 誰がいつ書いたか調べる | git blame ファイル名 |
ブランチ操作
| やりたいこと | コマンド |
|---|---|
| ブランチを作って移動 | git switch -c ブランチ名 |
| ブランチを切り替え | git switch ブランチ名 |
| ブランチ一覧 | git branch |
| マージ | git merge ブランチ名 |
やり直したい
| やりたいこと | コマンド |
|---|---|
| 直前のコミットを取り消す(変更をステージに残す) | git reset --soft HEAD^ |
| 直前のコミットを取り消す(変更を作業ディレクトリに残す) | git reset --mixed HEAD^(オプションなしと同じ) |
| 直前のコミットを取り消す(変更ごと全部消す) | git reset --hard HEAD^ ※元に戻せない |
git add を取り消す |
git restore --staged ファイル名 |
| ファイルを変更前に戻す | git restore ファイル名 ※元に戻せない |
| push済みの変更を安全に打ち消す | git revert HEAD(直前)/ git revert コミットハッシュ |
その他
| やりたいこと | コマンド |
|---|---|
| 作業を一時退避 | git stash |
| 退避した作業を戻す | git stash pop |
| 特定コミットだけ取り込む | git cherry-pick コミットハッシュ |
よく混乱するやつ
reset と revert の違い
resetはコミット履歴を削除する。ローカルでのやり直し向き。revertは打ち消すコミットを追加する。リモートにpush済みのコミットを修正するときはこちら。
push済みのコミットを reset して force push するのは基本NG。
--soft / --mixed / --hard の使い分けについては別記事で詳しく説明する予定。
merge と rebase の違い
mergeはブランチの分岐と合流をそのまま履歴に残す。チーム開発で正確な履歴が必要な場合に使う。rebaseはfeatureブランチのコミットをmainの先頭に付け替えて一直線の履歴にする。個人ブランチの整理向き。
checkout と switch / restore の違い
git checkout はもともとブランチ切り替えとファイル復元の両方をやるコマンドだったが、Git 2.23 で役割が分割された。
| 旧 | 新 | 役割 |
|---|---|---|
git checkout -b ブランチ名 |
git switch -c ブランチ名 |
ブランチを作って移動 |
git checkout ブランチ名 |
git switch ブランチ名 |
ブランチを切り替え |
git checkout ファイル名 |
git restore ファイル名 |
ファイルを変更前に戻す |
checkout は今も動くが、意図が伝わりにくい。今から覚えるなら switch / restore の方がわかりやすい。
fetch と pull の違い
git fetch = リモートの変更を取得するだけ(作業ディレクトリは変わらない)
git pull = fetch + 取り込み処理をまとめてやる
git pull の取り込み処理は設定によって merge になったり rebase になったりする。デフォルトは merge。
「何が変わったか確認してから取り込みたい」場合は fetch → git diff origin/main → merge の順に。
まず覚えるなら status, add, commit, push, pull の5つ。残りは困った時に引けばいい。