私は両者の違いを理解しようとしています
git push --force
そして
git push --force-with-lease
私の推測では、ローカルブランチが持っていないコミットがリモートにない場合、後者はリモートにプッシュするだけですか?
--force-with-lease
、最新のCPUでの比較とスワップの命令の実装と同様です。スワップを実行したい人が期待値と新しい値を提供します。スワップを実行するシステムは、期待値と実際の現在値を比較し、2つが等しい場合にのみスワップを実行します。を使用するgit push
と、期待値はリモートトラッキング名に含まれるものになります。たとえば、新しい値と一緒にgit push --force-with-lease origin X
独自のorigin/X
値を送信します。origin
のGitは、交換が行われたかどうかを通知します。
origin
交換が行われた場合は、完了です。そうでない場合は、実行git fetch origin
して新しい現在の値を取得し、必要に応じて変更をやり直し、もう一度強制的にリースして比較とスワップを実行して再試行できます。
git help push
その目的を説明するユースケースがあります(基本的に、誰かが押し上げた変更を破棄しないようにするため)。リモートトラッキングブランチがどのように機能するかは、私には少し不明確です。しかし、おそらく通常は、前回コミットしたとき、fetch
またはpull
新しいコミットを行わなかったときの外観を正確に調べる必要があるでしょう。