A Little Each Day

note to self

git pushがrejectされた場合の対処方法

こんにちは。本日はgit pushした場合にrejectedが発生したときの対処方法についてです。

競合状態でリモートリポジトリにプッシュしてしまうと、このエラーが発生してしまうそうです。

git push

ソースコードを変更して、今まで通りにリモートリポジトリにプッシュしました。

$ git push


しかしながら、以下のようなエラーが発生してしまいました。

To git@github.com:◯◯◯.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:◯◯◯.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.


先にリモートリポジトリに変更があった場合だと、変更履歴が競合状態にあるのでリモートリポジトリにプッシュできなくなります。


解決方法

プルして最新の変更履歴をマージしてから、またプッシュし直せばOKです。

$ git pull origin master


マージで競合したのでコミットし直します。(たぶんVimが立ち上がります)

$ git commit -m "競合解決"


あとは今まで通りプッシュするだけです。

$ git push


これでエラーなく無事プッシュできました。



本日は以上です。