git pushがrejectされたときの解決の手順

いまだにgitがよくわかってない。

git push すると

$ git push
To git@github.com:snaka/snaka-code-pocket.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:snaka/snaka-code-pocket.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'non-fast forward'
section of 'git push --help' for details.

とか言われた。
githubにおいてるファイル(readme.md)の内容をWebから修正したため競合が起きてるっぽい。

とりあえず git push --help見て、以下のような手順で解決した。

作業用ブランチ作る

git branch temp1
git checkout temp1

作業用ブランチにpullする

git pull origin +master:temp1

作業用ブランチとmasterブランチの差分を確認する

git diff temp1 master

masterブランチに作業用ブランチの内容をマージする

git checkout master
git merge temp1

以上で競合が解決できたので、無事 git pushできるようになる。

いらなくなったtemp1ブランチはあとでgcしちゃえばいいのかもしれない(たぶん)。

追記

id:anekosからツイートもらった。

こんどこそちゃんとGitを勉強しよ。

ところで、はてダのTwitter記法便利。