git pushがリジェクトされる。

Last update

2018/11/04(日)


目的

今回、commitしたファイルがバグありで出してしまったのでcommitを修正したいということでcommitの修正からそのPushまでです。 今回の記事は記憶で書いてます

参考資料

dackdive.hateblo.jp

作業内容

まずはじめにローカルcommitの修正から行います。 今回修正するコミットは直近のコミットだったのrebaseでvimが起動させます。

その後vimに表示されるコミット情報の先頭に表示されている「pick」を「exit」に変更します。 (すみません…ここはevidenceなしです…参考資料参照してください。)

$git rebase -i HEAD^

vimで変更後コミットの内容を変えていこうと思います。 まずは通常通りaddしたあとrebaseします。 コミットの内容も変更する場合は、git commit --amendを使ってコミットメッセージを変更します。 コミットを変更したら、次はPushをします。 今回のpushでは、オプションでfを使います。

$git add index.html
$git rebase --continue
$git push -f origin master

今回のような場合、オプションなしでPushを行うと下記のようなエラーが出る場合があるので、オプションをつけてPushします。

error: failed to push some refs to 'git@<URL>'
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.

これでリモートとローカルでコミットを変更できました。

補足

今回はオプションでfを使いましたが、このオプションは強制的にプッシュするため、本来はあまりよろしくないようです。

qiita.com