Gitコマンドを現場レベルで使いこなす【よく使う20コマンド】
Gitのコマンドはadd・commit・push・pullだけ知っていれば日常の9割はこなせる。
でも現場では「あのコミットに戻したい」「間違えてmainにpushしてしまった」「別ブランチのあのコミットだけ取り込みたい」という場面が必ず来る。
この記事では、現役SEが現場で実際に使うGitコマンド20個を、場面ごとに解説する。
基本操作(復習)
1. git status
git status
現在の変更状態を確認する。「何が変更されているか」「何がステージングされているか」を把握する最初の一歩。
2. git log(整形版)
git log --oneline --graph --decorate --all
コミット履歴をグラフ形式で見やすく表示する。ブランチの分岐・マージの状態が視覚的にわかる。
エイリアスに登録しておくと便利:
git config --global alias.lg "log --oneline --graph --decorate --all"
# 以降は git lg で使える
3. git diff
# ワーキングツリーとステージの差分
git diff
# ステージとHEADの差分(何をコミットするか確認)
git diff --staged
コミット前に「何を変更したか」を確認する習慣をつけると、不要な変更を含めてしまうミスが減る。
ブランチ操作
4. git switch(ブランチ切り替え)
# ブランチを切り替える
git switch feature/login
# 新しいブランチを作って切り替える
git switch -c feature/new-feature
古くから git checkout が使われていたが、現在は git switch(ブランチ切り替え)と git restore(ファイル復元)に分離されている。新しい方を使う習慣をつけると混乱が少ない。
5. git branch
# ブランチ一覧(リモート含む)
git branch -a
# ブランチを削除
git branch -d feature/old-feature
# マージ済みブランチを一括削除
git branch --merged | grep -v "main\|develop" | xargs git branch -d
6. git merge vs git rebase
# マージ(履歴をそのまま残す)
git merge feature/login
# リベース(履歴を一直線に整理する)
git rebase main
チームのルールに合わせて使い分ける。rebase は履歴をきれいにできるが、共有ブランチでは使わないのが鉄則(他の人の履歴を壊す)。
コミット操作
7. git commit —amend
git commit --amend
直前のコミットメッセージを修正したり、ステージした変更を直前のコミットに追加したりできる。
注意:push済みのコミットに対して使うと、リモートとの履歴が食い違う。ローカルのみで使うこと。
8. git stash
# 現在の変更を一時退避
git stash
# 退避リストを確認
git stash list
# 退避した変更を戻す
git stash pop
「作業途中だけど急にブランチを切り替えなければならない」ときに使う。コミットするほどでもない一時的な変更の保存先として便利。
9. git cherry-pick
git cherry-pick <コミットハッシュ>
別ブランチの特定のコミットだけを、現在のブランチに取り込む。
ユースケース:hotfixブランチで修正したコミットをdevelopブランチにも反映したいとき。
取り消し・巻き戻し操作
10. git restore(ファイルの変更を取り消し)
# ワーキングツリーの変更を取り消し
git restore <ファイル名>
# ステージを取り消し(git add の取り消し)
git restore --staged <ファイル名>
11. git reset
# 直前のコミットを取り消し(変更はワーキングツリーに残す)
git reset HEAD~1
# 直前のコミットを取り消し(変更も消す ※破壊的)
git reset --hard HEAD~1
--hard は変更ごと消えるため、慎重に使う。--soft や --mixed(デフォルト)の方が安全。
12. git revert
git revert <コミットハッシュ>
指定したコミットを打ち消す新しいコミットを作る。reset と違い、履歴を書き換えないためpush済みのコミットの取り消しに使うのが正しい使い方。
リモート操作
13. git fetch
git fetch origin
リモートの変更をローカルに取り込むが、ワーキングツリーには反映しない。git pull は fetch + merge を同時にやるが、先に fetch して差分を確認してから merge する方が安全。
14. git push —force-with-lease
git push --force-with-lease
--force の安全版。リモートに自分が知らない新しいコミットがある場合はpushを拒否してくれる。rebase 後の強制pushに使う。
--force は使わないを徹底することで、他の人のコミットを消す事故を防げる。
15. git remote
# リモートの一覧確認
git remote -v
# リモートのURLを変更(HTTPSからSSHに切り替えるときなど)
git remote set-url origin [email protected]:user/repo.git
確認・調査系
16. git blame
git blame <ファイル名>
ファイルの各行を「誰が・いつ・どのコミットで書いたか」を表示する。「このコードなぜこう書いてあるの?」の調査に使う。VSCodeのGitLens拡張機能でも同じことができる。
17. git bisect
git bisect start
git bisect bad # 現在のコミットはバグあり
git bisect good <hash> # バグがないことを確認済みのコミット
二分探索でバグが混入したコミットを特定する。「いつからこのバグが出ているか」を効率的に調べられる。
18. git reflog
git reflog
reset --hard や rebase で消えたと思ったコミットを見つけるための最後の手段。Gitのすべての操作履歴が記録されている。「消してしまった!」というときにまずここを確認する。
設定・その他
19. git config
# グローバル設定を確認
git config --global --list
# ユーザー情報の設定
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
# デフォルトブランチをmainに設定
git config --global init.defaultBranch main
20. .gitignore
コマンドではないが、.gitignore の設定は重要なので含める。
# .gitignoreを生成するツール(gitignore.ioを使う)
curl -sL https://www.toptal.com/developers/gitignore/api/node,macos > .gitignore
node_modules/・.env・.DS_Store など、コミットすべきでないファイルを確実に除外する設定を最初に行う。
まとめ:現場でよく使うコマンドTOP5
| コマンド | 使う場面 |
|---|---|
git stash | 作業途中でブランチ切り替えが必要なとき |
git cherry-pick | 別ブランチの特定コミットだけ取り込みたいとき |
git revert | push済みのコミットを取り消したいとき |
git reflog | 誤操作でコミットを消してしまったとき |
git log --oneline --graph | 現在の履歴・ブランチ状態を把握したいとき |
Gitは「ミスしても取り消せる」設計になっている。コマンドの意味を理解して使えば、操作ミスへの恐怖心が減り、もっと積極的に使えるようになる。