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