Git CLI コピペで使える実践 Tips 集【中級者向け】
Git CLI コピペで試せる実践テクニックをまとめました。「知ってはいたけど使いこなせていなかった」レベルの Tips を中心に、実務で役立つコマンドをコード付きで紹介します。
インタラクティブ rebase でコミット履歴を整える
直近 N 件をまとめて編集する
git rebase -i HEAD~5
エディタが開いたら各行の先頭キーワードを書き換えます。
| キーワード | 略称 | 動作 |
|---|---|---|
pick | p | そのまま使う |
reword | r | コミットメッセージだけ書き換え |
squash | s | 直前のコミットに統合(メッセージは結合) |
fixup | f | 直前のコミットに統合(メッセージは破棄) |
drop | d | コミットを削除 |
fixup コミットを自動で統合する
git commit --fixup=<統合したいコミットハッシュ>
git rebase -i --autosquash HEAD~5
--autosquash を付けると fixup! プレフィックス付きのコミットが自動的に正しい位置へ移動します。
特定コミットのメッセージだけ書き直す
git rebase -i HEAD~3
# エディタで対象行を pick → reword に変更して保存
git worktree で複数ブランチを同時に作業する
git worktree を使うと、同一リポジトリを別ディレクトリにチェックアウトできます。ブランチを切り替えずに本番ホットフィックスを確認しながら機能開発を続けられます。
worktree を追加する
git worktree add ../project-hotfix hotfix/v1.2.1
../project-hotfix ディレクトリに hotfix/v1.2.1 ブランチがチェックアウトされます。
新しいブランチを worktree として作成する
git worktree add -b feature/new-api ../project-new-api main
worktree の一覧を確認・削除する
git worktree list
git worktree remove ../project-hotfix
よくある使い方
# メイン作業ツリー(現在のブランチ)はそのままに
git worktree add ../review-pr origin/feature/some-pr
cd ../review-pr
# レビュー・動作確認
cd -
git worktree remove ../review-pr
便利な git alias を設定する
~/.gitconfig に追記するか、コマンドで登録します。
よく使う alias をまとめて登録
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cp cherry-pick
git config --global alias.lg "log --oneline --graph --decorate --all"
git config --global alias.undo "reset HEAD~1 --soft"
git config --global alias.aliases "config --get-regexp alias"
直前の操作をなかったことにする
git undo
# = git reset HEAD~1 --soft
# コミットを取り消すがファイルの変更は残る
現在のブランチをリモートに強制プッシュ(自分のブランチ限定)
git config --global alias.fpush "push --force-with-lease"
git fpush
--force-with-lease は他の人がプッシュしていた場合に失敗するため、通常の --force より安全です。
.gitconfig に直接書く場合
[alias]
st = status
co = checkout
br = branch
lg = log --oneline --graph --decorate --all
undo = reset HEAD~1 --soft
fpush = push --force-with-lease
wt = worktree
fzf と組み合わせてブランチ切り替えをインタラクティブにする
fzf がインストールされていれば、ブランチ選択を対話的に行えます。
ローカルブランチをインタラクティブに切り替える
git checkout $(git branch | fzf | tr -d ' ')
リモート含めて切り替える
git checkout $(git branch -a | fzf | sed 's|remotes/origin/||' | tr -d ' ')
alias として登録する
git config --global alias.sw '!git checkout $(git branch -a | fzf | sed "s|remotes/origin/||" | tr -d " ")'
git sw
コミットハッシュを fzf で選んで checkout する
git checkout $(git log --oneline | fzf | awk '{print $1}')
stash を fzf で選んで適用する
git stash apply $(git stash list | fzf | awk -F: '{print $1}')
git log をきれいに表示する
グラフ付き一覧表示
git log --oneline --graph --decorate --all
日時・著者・コミットメッセージをカスタム表示
git log --pretty=format:"%C(yellow)%h%Creset %C(cyan)%ad%Creset %C(green)%an%Creset %s" --date=short
出力例:
a1b2c3d 2026-06-19 Alice feat: ユーザー認証を追加
e4f5g6h 2026-06-18 Bob fix: ログインバグを修正
特定ファイルの変更履歴を追う
git log --follow --oneline -- src/components/Button.tsx
--follow を付けるとファイル名が変わった場合もリネーム前の履歴を追跡します。
特定の文字列が追加・削除されたコミットを探す
git log -S "function fetchUser" --oneline
-S は差分に指定文字列が含まれるコミットを絞り込みます。正規表現で探したい場合は -G を使います。
git log -G "fetch(User|Post)" --oneline
著者・日付で絞り込む
git log --author="Alice" --since="2026-01-01" --until="2026-06-30" --oneline
stash の応用テクニック
特定ファイルだけ stash に積む
git stash push src/config.ts
メッセージ付きで stash に積む
git stash push -m "WIP: 認証フロー修正中"
stash の内容を確認してから適用する
git stash list
git stash show -p stash@{0}
git stash apply stash@{0}
stash を新しいブランチとして展開する
git stash branch feature/recovered-work stash@{0}
ブランチを作成しながら stash を適用します。コンフリクトが起きにくく、作業途中の状態を安全に回収できます。
未追跡ファイルも含めて stash する
git stash push -u
-u (--include-untracked) を付けると git add していないファイルも stash に入ります。
stash を全件削除する
git stash clear
まとめ
| カテゴリ | 代表コマンド / Tips |
|---|---|
| インタラクティブ rebase | git rebase -i HEAD~N、--autosquash で fixup 自動整理 |
| git worktree | git worktree add <path> <branch> で複数ブランチを同時展開 |
| alias | --force-with-lease を fpush に、undo で soft reset |
| fzf 連携 | ブランチ・コミット・stash を対話的に選択して操作 |
| git log | --pretty=format でカスタム表示、-S / -G で文字列検索 |
| stash 応用 | ファイル指定・ブランチ展開・未追跡ファイル込みの -u |
どのコマンドもそのままコピペして動きます。alias を育てていくと毎日の Git 操作がかなり快適になるので、まずは lg と undo あたりから試してみてください。