--force-with-leaseで安全にGit Force Push
git push --forceと--force-with-leaseの違いを学びます。force pushが必要な場合と、チームメイトの作業を上書きせずに安全に行う方法を理解します。
Remote
詳細な説明
Gitでの安全なForce Push
リベースやコミットの修正後にforce pushが必要になることがあります。しかし--forceは他の人の作業を上書きする可能性があります。--force-with-leaseが安全な代替手段です。
--forceの危険性
# 危険:リモートの状態に関係なく上書き
git push --force
--force-with-lease:安全な代替手段
# 安全:最後のfetch以降リモートが変更されていない場合のみプッシュ
git push --force-with-lease
動作原理:
- Gitがリモートブランチが期待する状態かどうかチェック
- 他の人が新しいコミットをプッシュしている場合、プッシュは拒否される
- fetch、新しい変更の統合、その後再プッシュが必要
ベストプラクティス
- 常に
--force-with-leaseを使用 (--forceの代わりに) - エイリアスとして設定:
git config --global alias.pushf "push --force-with-lease" - 共有ブランチのforce push前にチームに連絡
- main/masterにforce pushしない -- ほとんどのチームはこれらのブランチを保護
ユースケース
Force pushはリベースベースのワークフローの日常的な一部であり、開発者はマージ前にフィーチャーブランチを最新のmainにリベースします。リモートブランチにプッシュされたコミットの修正後にも必要です。--force-with-leaseの使用は、協調的な環境での偶発的なデータ損失を防ぐために、ほとんどのプロフェッショナルな開発チームが採用するベストプラクティスです。