--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

動作原理:

  1. Gitがリモートブランチが期待する状態かどうかチェック
  2. 他の人が新しいコミットをプッシュしている場合、プッシュは拒否される
  3. fetch、新しい変更の統合、その後再プッシュが必要

ベストプラクティス

  1. 常に--force-with-leaseを使用--forceの代わりに)
  2. エイリアスとして設定:
    git config --global alias.pushf "push --force-with-lease"
    
  3. 共有ブランチのforce push前にチームに連絡
  4. main/masterにforce pushしない -- ほとんどのチームはこれらのブランチを保護

ユースケース

Force pushはリベースベースのワークフローの日常的な一部であり、開発者はマージ前にフィーチャーブランチを最新のmainにリベースします。リモートブランチにプッシュされたコミットの修正後にも必要です。--force-with-leaseの使用は、協調的な環境での偶発的なデータ損失を防ぐために、ほとんどのプロフェッショナルな開発チームが採用するベストプラクティスです。

試してみる — Git Command Reference & Cheat Sheet

フルツールを開く