git ammend後にエラーが出た

初めに

  • 学習中躓いた部分をまとめアウトプットしていきます。

  • 初心者にも分かりやすいように書いていきます。

背景

* リモートリポジトリにpushを行った。

  • その後コミットメッセージを修正したいと思い、git commit --amendを実行してコミットメッセージの修正を行う。

  • 修正後git pushを行うも以下のメッセージが現れる。

! [rejected]        replace -> replace (non-fast-forward)
error: failed to push some refs to 'https://github.com/kyohei682474/resume.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
  1. pushに失敗している

  2. 更新が拒絶されている。なぜならあなたのローカルのブランチが遅れているリモートのブランチよりも遅れているから

  3. そのリモートの対応する部分。リモートの変更を統合しなさい

  4. プッシュする前にpullを行いなさい。

結論

  • git push後にgit commit --amendはやってはいけない。

  • git amendはコミットを修正して新たにコミットメッセージを書き換えるのでリモートにpushしたメッセージよりも1段階戻してそこから新たにコミットしたことになるのでamendした後にpushをしてしまうと競合が起きる。

解決策

  • git resetを行う。

  • git reset origin/ブランチ名を実行する。

  • 新たにコミットを作成する。

  • 新たにコミットメッセージを作成後にpushを行う。

まとめ

  • git pushを行った後git amendを行いpushをすることはできない。

  • リーカルでresetを行い、amendを行ったよりも前の状態に戻す。

  • 他にもあるが今回は一番やりやすい方法で行った。

参考サイト

note.com