Top / Subversion / 削除してしまったファイルを元に戻す

Subversionでバージョン管理していると、間違って削除コミットしてしまったファイルなども復活させることができます。とてもベンリです。、、、がEclipse上というかSubversiveでどうやって戻せばよいかを調べてたんですが、どうもやり方がわかりません(´д`;)。。Eclipseのツリー上にはファイルが消えちまってるので、指定して戻すみたいなオペレーションができないんですね。

とりあえずコマンドプロンプトでは以下のように復活できます。復活といっても削除コミットを取り消すのではなく「消す直前のリビジョンを指定して、それをローカルのワーキングコピーにsvn copyし、再度svn add & commitする」という考え方ですね。

プロジェクト構成

プロジェクトが以下の構成とします。

01.png

Main3.javaを削除コミットします。

プロジェクトは以下の構成になりました。

02.png

ではこのコミットを取り消してみます。

やってみる

プロジェクトをチェックアウト

[hoge@server1 svn]$ pwd
/home/hoge/kino/svn
[hoge@server1 svn]$ svn checkout "http://[サーバ名]/svn/sandbox/trunk/SampleProject@HEAD" \
        -r HEAD --username "hoge"
A    SampleProject/.classpath
A    SampleProject/source
A    SampleProject/source/Main1.java
A    SampleProject/source/Main2.java
A    SampleProject/.project
リビジョン 52 をチェックアウトしました。

チェックアウトしました。*1

[hoge@server1 svn]$ cd SampleProject
[hoge@server1 SampleProject]$ cd source

ログを見て、削除されたリビジョンを確認

svnのログを見ます。--verboseで詳細も表示します。

[hoge@server1 source]$ svn log --verbose
------------------------------------------------------------------------
r52 | hoge | 2008-01-25 20:00:40 +0900 (金, 25  1月 2008) | 1 line
変更のあったパス:
   D /trunk/SampleProject/source/Main3.java

Main3.javaを削除コミット <-間違っていたとして、後で復活させる。
------------------------------------------------------------------------
r51 | hoge | 2008-01-25 19:55:47 +0900 (金, 25  1月 2008) | 1 line
変更のあったパス:
   A /trunk/SampleProject/.classpath
   A /trunk/SampleProject/.project
   A /trunk/SampleProject/source
   A /trunk/SampleProject/source/Main1.java
   A /trunk/SampleProject/source/Main2.java
   A /trunk/SampleProject/source/Main3.java

新規作成。
------------------------------------------------------------------------
[hoge@server1 source]$

revision 52で削除されたことがわかりました。よってrevision 51を指定してワーキングコピーにファイルをsvn copyします。

ワーキングコピーにファイルをsvn copy

[hoge@server1 source]$ svn copy --revision 51 \
  http://[サーバ名]/svn/sandbox/trunk/SampleProject/source/Main3.java ./ (ここまで一行で入力)
A         Main3.java
[hoge@server1 source]$ ls -lrt
合計 12
-rw-rw-r-- 1 hoge hoge 349 2008-01-25 19:55 Main2.java
-rw-rw-r-- 1 hoge hoge 349 2008-01-25 19:55 Main1.java
-rw-rw-r-- 1 hoge hoge 349 2008-01-25 20:16 Main3.java <-戻った
[hoge@server1 source]$
[hoge@server1 source]$ svn status
A  +   Main3.java
[hoge@server1 source]$ svn commit -m "復活。"
追加しています              source/Main3.java

リビジョン 53 をコミットしました。
[hoge@server1 source]$

復活しました。*2

ちなみにTortoiseSVNなら

TortoiseSVNならチェックアウトしてきてプロジェクトのsvn logを参照し、一番下のビューで削除されたファイルを選択し「このリビジョンをおける変更を元に戻す(R)」でOK!あとはコミットすれば元通り。

Tortoise.png

Eclipse Subversiveなら

これがわかんないんですよね。誰か教えてくださいっ。


この記事は

選択肢 投票
おもしろかった 46  
そうでもない 2  
  • 間違って消してしまい、アセアセしていたらこの記事。すごく助かりました!! -- Masaki? 2011-06-12 (日) 02:19:15
  • 助かりました!! -- s? 2013-05-17 (金) 10:50:03

Top / Subversion / 削除してしまったファイルを元に戻す

現在のアクセス:67667


*1 svn checkout http://[サーバ名]/svn/sandbox/trunk/SampleProject?とかでいい
*2 svn copy --revision 51 http://[サーバ名]/svn/sandbox/trunk/SampleProject?/source/Main3.java ./Main3.java.new などとファイル名やパスを指定できる。カレントからの相対指定ですね

添付ファイル: fileTortoise.png 2037件 [詳細] file02.png 1073件 [詳細] file01.png 1123件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-07-20 (木) 10:30:24 (122d)