git submodule update で発生した競合をリセットしたい場合

gitの鬼門と呼ばれることの多いsubmoduleだけど、submodule内でローカル編集などしててリモートリポジトリとの競合が発生する多くの場合、リセットしてリモートリポジトリと同期したいと思う。そんなときは

$ cd <submodule>
$ git fetch origin
$ git reset --hard origin/master

それで

$ cd ..
$ git submodule foreach git pull origin master
$ git submodule update

忘れがちなので。(というかsubmoduleを更新したいときももちろん忘れずに)

この辺、普段気にしなくても自動的に更新される仕組みとか知見を持ってる方がいれば教えていただきたいな〜