Git CLI コピペで使える実践 Tips 集【中級者向け】

Git CLI コピペで試せる実践テクニックをまとめました。「知ってはいたけど使いこなせていなかった」レベルの Tips を中心に、実務で役立つコマンドをコード付きで紹介します。

インタラクティブ rebase でコミット履歴を整える

直近 N 件をまとめて編集する

git rebase -i HEAD~5

エディタが開いたら各行の先頭キーワードを書き換えます。

キーワード略称動作
pickpそのまま使う
rewordrコミットメッセージだけ書き換え
squashs直前のコミットに統合(メッセージは結合)
fixupf直前のコミットに統合(メッセージは破棄)
dropdコミットを削除

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
インタラクティブ rebasegit rebase -i HEAD~N--autosquash で fixup 自動整理
git worktreegit worktree add <path> <branch> で複数ブランチを同時展開
alias--force-with-leasefpush に、undo で soft reset
fzf 連携ブランチ・コミット・stash を対話的に選択して操作
git log--pretty=format でカスタム表示、-S / -G で文字列検索
stash 応用ファイル指定・ブランチ展開・未追跡ファイル込みの -u

どのコマンドもそのままコピペして動きます。alias を育てていくと毎日の Git 操作がかなり快適になるので、まずは lgundo あたりから試してみてください。