このページの目次
Git 操作マニュアル
履歴と検索
delta は git diff の現代的な代替手段です。サイドバー、行番号、シンタックスハイライトを提供します。設定: git config --global pager.diff delta && git config --global pager.log delta
# コミット履歴
# 誰が変更したか
# バグを導入したコミットを二分探索で特定
# → Git が中間バージョンをチェックアウト → テスト → git bisect good/bad → ... → 最初の bad commit を特定
# 失われたコミットを復元
# → リセット/ドロップされたコミットハッシュを見つける → git checkout -b recovery <hash>
ブランチとマージ
# merge: ブランチ履歴を保持し、マージコミットを生成
# 用途: feature ブランチを main にマージし、「この機能は別々に開発された」という情報を保持
# rebase: 現在のブランチのコミットをターゲットブランチの後ろに移動し、線形履歴を作成
# 用途: PR 送信前に feature ブランチを main に合わせて、線形履歴を維持
# rebase 競合時の対応:
# cherry-pick: 他ブランチから単一コミットを取得
# 用途: リリースブランチに特定のバグ修正のみをマージし、他の変更は含めない
# マージ済みブランチの削除
| |
ストッシュと取り消し
# 現在の変更を一時退避 (ブランチ切り替え前)
# 取り消し
# push 済みコミットのリモートでの取り消し:
# vs reset: revert は公開ブランチに適している(他人の履歴を壊さない)、reset はローカルブランチに適している
リモート
# 安全な force push: リモートが他人によって変更されていない場合にのみプッシュ
# --force より安全: 最後の fetch 以降に同僚が push した場合、これを拒否し、上書きを防ぐ
Submodule
Worktree
# 同一リポジトリの異なるディレクトリで異なるブランチをチェックアウト(2回 clone 不要)
# → ../hotfix ディレクトリは hotfix-branch のワークツリーであり、現在のディレクトリに影響を与えない
# 用途: 長時間のテストを実行中に、別のブランチでバグ修正を行う
Tag