🏯
git resetした後、強引にpushする方法
はじめに
間違えてリモートにpushすることがよくあります。
revertして元に戻す履歴をとるのがいいのですが、conflictしちゃった!とか、mergeしなきゃとか、焦っていると混乱します。
そんなことを2回ほど実施して、そのたびにgoogleで調べていたので自分用のメモです。
git reset --hard
歴史の改竄なので、できるだけしない方がいいです。が、resetします。xxxxxxxxはコミットのIDです。
これで特定のコミットまで戻します。
git reset --hard xxxxxxxx
git push
で、pushすると、エラーがでます。
歴史を改竄しようとするからです。
リモートリポジトリは未来にあるのに、過去の時点のコミットをあたかも今だとPUSHしようとするためです。
$ git push
To git@github.com:yamadatt/icom.git
! [rejected] HEAD -> main (non-fast-forward)
error: failed to push some refs to 'git@github.com:yamadatt/icom.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
強引にPUSHするぜ
強引にPUSHします。-fは「force」のことです。1人開発なら、強制PUSHは恐れることはないです。強制PUSH万歳。
git push -f origin main
Discussion