気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

git pull --rebaseで最新を取り込む

git pull --rebase時に使うコマンド

以下のようなコマンドで取り込む

$ git pull --rebase origin master

#conflict時は修正して
$ git rebase --continue

$ git push origin feature/myBranch --force

rebase後は、コミットを改変しているので、fast-forwardができないため、forceプッシュする必要がある。

$ git push origin feature1
To github.com:testUser/test.git
 ! [rejected]        feature1 -> feature1 (non-fast-forward)
error: failed to push some refs to 'git@github.com:testUser/test.git'
(以下略)

force pushをより安全に行う

force pushはデグレの原因になるので以下のコマンドを実行するとより良い。

$ git push --force-with-lease --force-if-includes
  • --force-with-lease
    • リモート確認してローカルが最新か判定。最新ならpush、それ以外では失敗する。誤って古いファイルで上書きしてしまうことを回避可能
  • --force-if-includes
    • reflog に remotes/origin/main (I) が含まれていることをチェックし、直前fetch状態なら拒否する

--force-with-leaseだけでは、直前にfetchしていると push が成功してしまうので、--force-if-includesも併用する。

参考URL