heroku みたいな git push で自動デプロイする方法として、よく post-recceive フックで git pull する方法が載っているけど、 自分の場合、それがうまくいかなかったことがあったのでメモ。 よくある post-receive フックの内容は以下の通り。 #!/bin/sh ( cd /path/to/repository git --git-dir=.git pull origin master ) 普通の使い方をしている限り、この方法で問題なく動作する。 が、うっかり git push -f してしまうといろいろとややこしいことになる。*1 というのも、git pull は結局 git fetch + git merge でしかないので、(本当はなかったことにしたい) 以前の HEAD と新たな HEAD をいい感じにマージしてしまうからこんなことになる。