Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
269
Help us understand the problem. What is going on with this article?
@wMETAw

git push -f をやめて --force-with-lease を使おう

TL;DR

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

terminal
$ git push --force-with-lease origin main

--force-with-lease とは

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

エイリアスに登録する

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

terminal
# ~/.gitconfigに追加
$ git config --global alias.push-f "push --force-with-lease"

terminal
$ git push-f origin main

force push問題

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

同じブランチで複数人開発していた場合にタイミングによっては
「◯◯さんのコミットを吹き飛ばしちゃった//」 が発生する可能性が十分ある。

そもそも上記の運用方法に問題がある気はするが、どんな運用をしていたとしても
force pushする際は --force-with-leaseオプションを必ずつけるようにしておいて損はないと思う。

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

消されるとまずいブランチは [Settings] → [Branches]でさまざまなprotectionルールをかけておきましょう!

スクリーンショット 2021-03-25 19.22.50.png

269
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
wMETAw

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
269
Help us understand the problem. What is going on with this article?