web-dev-qa-db-ja.com

ファイルをSVNに追加し、コミットする前に削除します

不注意だったと思います。

svn addを使用してsvnに多数のファイルを追加した後、不要なファイルがいくつか追加されたので、rmを使用してそれらを削除しました。

コミットにファイルがないため、コミットできなくなりました。 svn cleanupを試しましたが、役に立ちませんでした。

私の現在の作業オプションは、すべての.svnディレクトリを手動で削除することですが、それは間違っているようです。

22
Eric

私が理解しているように、あなたはこの状況にあります:

$ touch foo
$ svn add foo
A         foo
$ rm foo
$ svn ci
svn: Commit failed (details follow):
svn: 'foo' is scheduled for addition, but is missing

だからそれを修正するにはこれを行います:(Linusに感謝します!)

$ svn revert foo
Reverted 'foo'

またはあなたはこれを行うことができます:

$ touch foo
$ svn delete --force foo

ファイルごとに、問題なくチェックインできるはずです。

39
patrickmdnet

サブフォルダーとファイルが含まれるフォルダーを追加した場合は、コミットする前にフォルダーを削除しました。この場合、次のように実行できます。

$ svn revert <Deleted Folder Name> --depth infinity
5
Son Tran

これは実際には@GonzaloMateoのわずかに変更されたバージョンであり、私の問題を解決しました。

svn st  | grep '!' | sed 's/!M      \(.*\)$/"\1"/' | xargs svn revert --depth infinity
3
linvenuza

複数のファイルが削除された複数のディレクトリがある場合は、次のコマンドが役立ちます。

_svn st  | grep '!M' | sed 's/!M      \(.*\)$/"\1"/' | xargs svn revert
_

最初に、元に戻す予定のファイルをリストすることをお勧めします。最後のパイプsvn st | grep '!M' | sed 's/!M \(.*\)$/"\1"/'を削除することでそれを行うことができます。

ステップバイステップのコマンドの説明:

  • _svn st_-追加および不適切に削除された _!M_記号の付いたファイルを一覧表示します
  • _grep '!M'_ _!M_の行を検索します
  • sed 's/!M \(.*\)$/"\1"/'これは、スペースを含む_!M_を取り除くために使用されます。また、ファイル名が引用されるため、ファイルにスペースが含まれているかどうかを心配する必要はありません。
  • _xargs svn revert_これにより、リストされているすべてのファイルが元に戻ります。
2
Gonzalo Mateo

もし、あんたが svn add Xファイルですが、コミットしていない場合は、後でそのファイルを削除する(コミットしない)ことにします。あなたは単にあなたを元に戻すべきですsvn add Xコマンドとsvn revert X

次に、まだコミットされていない追加を「元に戻し」ます。

1
Edwin Buck

これは私の問題を解決しました

svn st | grep '!' | sed 's/!M \(.*\)$/"\1"/' | xargs svn revert --depth infinity

注意すべきことの1つは、上記のコードは最新の追加に対してのみ機能するということです。したがって、エラーが発生した場合は、別の_svn ci_を実行してから、上記のコードを再度実行します。次に、すべての問題を元に戻すまで、もう一度_svn ci_します。

ボーナス:エイリアスを追加します(これはOh-My-ZSH Zsh Shell用です)

# SVN revert everything like reset hard alias sra="svn st | grep '!' | sed 's/!M \(.*\)$/"\1"/' | xargs svn revert --depth infinity"

これでsraつまりSVN Revert Allであなたの生活が楽になります。

0
Ahmad Awais