リカバリ

ローカルの master と origin/master を merge できるのかどうか、ってできた。
ええと、これで github と同期できた模様なのですが、何これ。燃料入れてこんなことしてるからワケワカになるのかどうか。つうか Git て merge が賢すぎて、なのが微妙なのかどうかとか意味不明な事を思っていたり。

整理してみるに

昨晩は

  • feature に追加した少々の差分を stage な branch に merge
  • heroku に push
  • ローカル側の master および stage ブランチの戻し

で、ローカル側で master に merge したソレを push しようとしたら reject された模様。これ、Pull Request で merge したら解決、だったのかどうか。あ、pull request してリモートで merge してローカルと merge したのかな。
ちょっと (かなり) 謎。

  • ローカルで merge してリモートに push は NG
  • リモートで merge してそれをローカルに merge は大丈夫だった

Git の merge は凄い、という結論で良いのかどうか (ぇ
そういえば、という訳でもないのですが、同様の謎事象として patch での差分吸収の動作は微妙なんだけど merge は普通にできちゃう、という謎事象も確認してます。
3-way merge のアルゴリズムを確認した方が良さげ。

  • 変更しなかったもの、および同じ結果に変更したものはその結果をとる
  • 一方が変更し、もう一方が変更していないものは変更した結果をとる
  • 上記以外は競合する変更とする

むむむ。