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も併用する。