git-svnでdcommit後に誤ってamendした場合の対処法

git-svnでローカルとリモートサーバーの整合性が取れなくなったけど。 - このブログは証明できない。 を見たところから話が広がって、dcommit後にamendしちゃったらどうすりゃいいの?を調べてみた。

ストーリー的にはつまりこういうこと。

$ git svn clone -s http://example.com/svn/repo
$ cd repo
$ echo "hoge" > hoge
$ git add hoge && git ci -m "hoge"
$ git svn dcommit
$ echo "foo" >> hoge
$ git ci -a -amend
$ git svn dcommit
# ここで以下のように怒られる
Merge conflict during commit: File or directory '.' is out of date; try updating: resource out of date; try updating at /usr/local/Cellar/git/1.7.5.1/libexec/git-core/git-svn line 579

で、どうするかというと

$ git reset HEAD@{1}
$ git ci -am "foo"
$ git svn dcommit

これでOK!

参考にした記事: http://labs.timedia.co.jp/2011/02/git-various-undo.html