Gitのコマンドを毎回調べ直すことがあるので、普段使うものを自分用に整理し直す。以前のメモはclone / add / commit / pushが中心だったため、現在よく使うswitch、restore、fetch、stash、rebase、reflog、取り消し操作まで追加した。
まず確認するコマンド
git status
git branch --show-current
git log --oneline --graph --decorate -10
作業前はとりあえずgit statusを見る。ブランチを間違えて作業していることがあるので、現在ブランチも確認しておく。
基本の流れ
git status
git diff
git add .
git diff --staged
git commit -m "Fix login validation"
git push
git diffは未ステージの差分、git diff --stagedは次のコミットに入る差分を確認するときに使う。
リポジトリを取得する
git clone https://github.com/USER/REPOSITORY.git
clone後は通常、リモート名はoriginになる。
ブランチ操作はswitchを使う
git checkoutでも切り替えられるが、ブランチ操作だけならgit switchの方が意図が分かりやすいのでこちらを使う。
# ブランチ一覧
git branch
git branch -a
# 既存ブランチへ移動
git switch develop
# 新しいブランチを作成して移動
git switch -c feature/login
# 直前のブランチへ戻る
git switch -
リモートにだけ存在するブランチも、名前が一意ならgit switch branch-nameで追跡ブランチを作成して切り替えられる場合がある。
リモートの変更を確認する:fetchとpull
ここは混同しやすいので分けて覚える。
# リモートの情報だけ取得
git fetch origin
# リモートとの差分を見る
git log HEAD..origin/main --oneline
git diff HEAD..origin/main
# 取得+現在ブランチへ統合
git pull
git fetchはリモート追跡ブランチを更新するだけなので、まず内容を確認したいときに使いやすい。git pullはfetchした後にmergeまたはrebaseなどで現在ブランチへ統合する。
push
# 追跡設定済みなら
git push
# 新規ブランチを最初にpush
git push -u origin feature/login
-uを付けてupstreamを設定しておけば、次回からgit pushだけでよい。
一時退避:stash
作業途中で別ブランチへ移動したいときに便利。
# 退避
git stash push -m "WIP login form"
# 一覧
git stash list
# 最新を戻してstashから削除
git stash pop
# 戻すだけでstashを残す
git stash apply
# untrackedも含めて退避
git stash -u
大きな変更を長期間stashに置くより、作業ブランチでWIPコミットにした方が安全なことも多い。
変更を取り消す:restore / revert / reset
この3つは用途が違うので、ここを一番注意する。
未コミットのファイル変更を戻す:restore
# ファイルの作業ツリー変更を捨てる
git restore path/to/file
# ステージだけ外す
git restore --staged path/to/file
git restore path/to/fileは未コミットの変更を失うので、必要なら先にdiffを確認する。
公開済みコミットを安全に打ち消す:revert
git revert <commit>
revertは過去の変更を逆にする新しいコミットを作る。すでにpushした共有履歴を戻す場合はこちらを基本にする。
ローカル履歴を戻す:reset
# コミットだけ戻して変更はstage済みのまま
git reset --soft HEAD~1
# コミットとstageを戻し、ファイル変更は残す
git reset HEAD~1
# コミット・stage・作業内容まで捨てる
git reset --hard HEAD~1
--hardは作業内容まで消すため特に注意。push済みの共有ブランチに対して履歴を書き換えるresetは基本的に避ける。
直前のコミットを修正する:amend
# ファイルを追加し忘れた場合
git add forgotten-file
git commit --amend --no-edit
# コミットメッセージを修正
git commit --amend
すでに共有済みのコミットをamendすると履歴が変わるため、push前のローカルコミットで使うのが基本。
mergeとrebase
自分のfeatureブランチへdevelopの最新を取り込む場合のメモ。
# mergeの場合
git fetch origin
git switch feature/login
git merge origin/develop
# rebaseの場合
git fetch origin
git switch feature/login
git rebase origin/develop
mergeは履歴をそのまま統合し、rebaseは自分のコミットの土台を付け替える。共有済みのコミットをrebaseするとコミットIDが変わるため、自分だけが使っている作業ブランチで使う。
rebase中に競合した場合
# 競合を直して
git add <修正したファイル>
git rebase --continue
# やめる場合
git rebase --abort
force pushが必要になった場合
rebaseやamend後に自分のリモートブランチを更新する場合、どうしてもforce pushが必要なことがある。
git push --force-with-lease
--forceより--force-with-leaseを使う。リモート側が想定外に更新されていれば上書きを拒否してくれる。ただし共有ブランチでは履歴を書き換えないのが基本。
履歴を見る
git log --oneline
git log --oneline --graph --decorate --all
git show <commit>
git diff <commit1>..<commit2>
困ったときのreflog
resetやrebaseで「さっきのコミットが見えなくなった」というときは、まずreflogを確認する。
git reflog
HEADが過去にどこを指していたか確認できるので、誤操作から戻せることがある。慌ててさらにresetする前に見る。
リモート確認
git remote -v
git remote get-url origin
よく使う流れ
# 作業開始
git switch develop
git pull
git switch -c feature/example
# 作業中
git status
git diff
git add .
git diff --staged
git commit -m "Implement example"
# リモートへ
git push -u origin feature/example
自分用の注意点
- 作業前とpush前に
git statusを見る - ブランチ切り替えは基本
git switch - ファイルを戻すなら
git restore - 共有済みコミットを取り消すなら基本
git revert git reset --hardは本当に捨ててよいか確認してから- rebaseは自分の作業ブランチ中心に使う
- forceが必要なら
--force-with-leaseを優先 - 操作を間違えたらまず
git reflogを見る
公式ドキュメントメモ
最終更新:2026年9月

