安全な git push -f

TL;DR

git push -fをやめて --force-with-leaseを使いましょう!

$ git push --force-with-lease origin master

force pushヤバイ理由

rebaseなどの作業の際、強制PUSHが必要なタイミングが出てくるが --forceでは
ローカルの内容を破壊的にリモートレポジトリを上書きしてしまう。

そうなった場合、 「◯◯さんのコミットを吹き飛ばしちゃった/// 」 が発生し、大惨事となる。

–force-with-lease とは

PUSHの際、ローカルのrefとリモートのrefを比較しローカルが最新か確認。
最新でなければ、PUSHは失敗するというもの。
(※ただし、直前にfetchしているとPUSHが成功してしまうので注意)

エイリアスに登録する

--force-with-lease とか長すぎるので、エイリアスに登録する

$ git config --global alias.push-f "push --force-with-lease"
[alias]
push-f = push --force-with-lease

$ git push-f origin master

ブランチを削除できないようにする

消されるとやばいブランチは [Settings] → [Protected branches]に追加しましょう

enter image description here

0 件のコメント :

コメントを投稿