この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
svnではコミットをなかったことにすることはできません。 コミットする前のリポジトリをローカル持ってきて再度コミットします。 そうすれば履歴は残りますが、リポジトリの最新の状態はミスる前に戻ります。
svnではコミットをなかったことにすることはできません。
なのでコミットする前のリポジトリをローカルに持ってきて再度コミットします。
そうすれば履歴は残りますがリポジトリはミスる前に戻ります。
ローカルのソースはミスった時のリビジョン番号から持ってきます。
それをまたコミットすればいいですね(ミスり方にもよりますが)。
では手順です。
1. リポジトリを最新にします。
svn up
のちにローカルをマージするときのために最新にします。
2. リビジョン番号を確認します。
リポジトリが正しかった時のリビジョン番号を調べます。
svn log
ここではリビジョン番号が100だったとします。
3. 正しかったときのリビジョンにローカルを戻します。
svn merge -r HEAD:100 .
ローカルのファイルが変更されます。-r HEAD:100
でリビジョンを指定しています。HEAD
はリポジトリで最新のリビジョンを表します。.
はマージ元です。
ローカルのソースが過去のリビジョンに戻りました。
4. 再度コミットします。
svn commit -m “コミットをミスったので過去の状態を再度コミットします。”
これでリポジトリは元に戻りました。
最新のリビジョンが正常だとちょっとほっとしますね。
5. 最後にミスったときのリビジョンからローカルのソースを戻します。
svn merge -r HEAD:ミスったときのリビジョン番号 .
これで、リポジトリとローカルが元に戻りました。