ローカル編集を元に戻さずにsvn addを元に戻す


157

誤って実行svn add *して、リポジトリに入れてはならないファイルをたくさん追加しました。また、保持したい一部のファイルをローカルで編集しています。svn addローカル編集を元に戻さずに元に戻すだけの簡単な方法はありますか?私がGoogleで目svn revertにする主な提案は、おそらくローカル編集を元に戻すことです。

回答:


282

それは:

svn rm --keep-local

同じことが私にも起こりました。:-P

多くの人があなたが使うべきだとコメントしました:

svn rm --keep-local FILENAME

すべてではなく、1つまたは複数のファイルにコマンドを適用すると、意図しない副作用が発生する可能性があります。


1
これは私には何の影響もありませんでした。ベースフォルダーから上記のコード(末尾のピリオドを含む)を実行しました。何か足りないのかわかりません。
zzz

8
コマンド名にファイル名を追加する必要があることに注意してくださいsvn rm --keep-local FILENAMEFILENAME(あなたはパターンを持っているには十分に幸運であれば)複数のファイルを一致させるために使用することができます*。
Adam Badura 2013

4
警告!
-svn

2
これをコミットした場合、コミットには問題のファイルのリポジトリからの削除が含まれませんか?
jwg 2014

1
//、jwgと同じ質問があります。SVNで制御されたファイルをいくつか編集しました。これらの編集をローカルに保持したい。ただし、リポジトリからファイルを完全に削除したくありません。ローカル編集をファイルにプッシュしたくないだけです。
Nathan Basanese

34

これらのファイルがまだコミットされていないディレクトリの下にある場合は、次のようにして、次のコミットからディレクトリの内容全体を削除できます。

svn delete --keep-local /path/to/directory

ただし、これらのファイルがすでにリポジトリーにあり、コミットしたくない変更が含まれている場合は、チェンジリストを使用して残りのファイルをコミットできます。

svn changelist somename /file/to/be/committed
svn commit --changelist somename

7

次の方法でチェックアウトを修正できます。

  1. ローカルファイルをバックアップする
  2. SVNチェックアウトを元に戻す
  3. ファイルを復元する

-

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 

最後のコマンドは常に追加のディレクトリレベルを作成します。つまり、で終わりYOURDIR/YOURDIR/ますが、問題は最初のバックアップコマンドの作成にあると思いますYOURDIR.bak/YOURDIR/
James

そのrsyncを回避するには、ソースディレクトリの末尾にスラッシュが必要です。答えを編集しました。
Brice M. Dempsey

3

同じ問題svn addがありましたが、バイナリとコンパイル済みファイルを含む/ディレクトリvia を誤って追加しました。このコマンドは実際にディレクトリを削除します。

svn rm --force <directory-name>

私の場合、ディレクトリは必要ないので、削除しても安全でした。ファイル/ディレクトリを保存しておきたい場合は、コマンドを適用する前と、コピーして戻した後の場所に保存します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.