質問: *解決したいこと git push時にerror: failed to push some refs toと出てくるのでそれを解決したいです。 *前提 RailsでWebアプリケーションを作成中です。 作業ブランチ:implement_bookmark_for_post エラーが出るまでの流れ 変更したファイルをコミットする→上記のブランチにpush→やり残しがあったのでgit reset --soft HEAD^をコマンドラインで叩く→再びコミット→作業ブランチにpurh(ここでエラー) *エラー内容 ``` ! [rejected] implement_bookmark_for_post -> implement_bookmark_for_post (non-fast-forward) error: failed to push some refs to 'https://github.com/keisuke713/cities.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. ``` *試したこと 以下のコマンドを試しましたがエラーは治りませんでした。 git pull git fetch -> git merge origin/master git fetch -> git rebase origin/master 以上、もし分かる方いましたら、よろしくお願いします。
回答: `git reset --soft HEAD^`の後、`push -f`はできますが、`push`はできません。 gitの基礎をご理解されていないことが原因と思います。 git-scmでgitの基礎を学ばれるのがいいと思います。 pushでエラーができるのはimplement_bookmark_for_postブランチがorigin/implement_bookmark_for_postの後ろ(behind)になっていることが原因です。 `push -f`でも直せますが、次のようにしてorigin/implement_bookmark_for_postの後ろにならないように直すといいでしょう。 ``` $ git status On branch implement_bookmark_for_post //implement_bookmark_for_postブランチにいることを確認 Your branch and 'origin/implement_bookmark_for_post' have diverged, //implement_bookmark_for_postブランチがorigin/implement_bookmark_for_postからdivergedと表示されるはず $ git reset origin/implement_bookmark_for_post //implement_bookmark_for_postブランチをorigin/implement_bookmark_for_postにreset $ git add -A //変更を全部add $ git diff --staged //commit前にdiff $ git commit $ git push //origin/implement_bookmark_for_postのbehindでないのでpushできる ```