“unadd”在提交之前将文件提交给svn

时间:2010-05-25 17:25:02

标签: svn

我正在做一个递归的svn add / commit,并且包含了一个没有正确的ignore属性的文件夹。我现在有大约100个上传的二进制文件版本,但我还没有提交。

在不删除所有文档的情况下,“撤消”此操作的最简单方法是什么?

5 个答案:

答案 0 :(得分:234)

使用svn revert --recursive folder_name


警告

  

svn revert本质上是危险的,因为它的全部目的是丢弃数据 - 即你未提交的更改。一旦你恢复,Subversion提供无法来取回那些未提交的更改。

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.revert.html

答案 1 :(得分:137)

svn rm --keep-local folder_name

注意:在svn 1.5.4中,即使指定了--keep-local,svn rm也会删除未版本控制的文件。有关详细信息,请参阅http://svn.haxx.se/users/archive-2009-11/0058.shtml

答案 2 :(得分:29)

对于您不需要但尚未提交的每个文件,请尝试svn revert filename。或者对有问题的文件夹执行svn revert -R folder,然后使用正确的忽略配置重新执行操作。

From the documentation:

 you can undo any scheduling operations:

$ svn add mistake.txt whoops
A         mistake.txt
A         whoops
A         whoops/oopsie.c

$ svn revert mistake.txt whoops
Reverted mistake.txt
Reverted whoops

答案 3 :(得分:2)

对于文件 - svn revert filename

对于文件夹 - svn revert -R folder

答案 4 :(得分:2)

完整进程(Unix svn包):

检查文件不在SVN中:

> svn st -u folder 
? folder

添加所有(包括忽略的文件):

> svn add folder
A   folder
A   folder/file1.txt
A   folder/folder2
A   folder/folder2/file2.txt
A   folder/folderToIgnore
A   folder/folderToIgnore/fileToIgnore1.txt
A   fileToIgnore2.txt

删除"添加"全部标记*忽略*文件:

> cd folder

> svn revert --recursive folderToIgnore
Reverted 'folderToIgnore'
Reverted 'folderToIgnore/fileToIgnore1.txt'


> svn revert fileToIgnore2.txt
Reverted 'fileToIgnore2.txt'

在文件夹上编辑svn ignore

svn propedit svn:ignore .

添加两个单行,仅包含以下内容:

folderToIgnore
fileToIgnore1.txt

检查要上传和提交的文件:

> cd ..

> svn st -u
A   folder
A   folder/file1.txt
A   folder/folder2
A   folder/folder2/file2.txt


> svn ci -m "Commit message here"