svn初学者:
让我们说我从一个svn仓库中撤出并编写了相当多的代码。但是,我只想提交我修改过的一半文件。但是,我不小心在所有这些上使用了svn add
。如何在不实际触及修改后的代码的情况下返回上一个svn状态(在添加所有这些文件之前)。
我知道我可以在一半上手动使用svn delete,但我想知道是否有更快的方式来回复。
答案 0 :(得分:2)
如果你没有提交和使用像TortoiseSVN这样的工具,你可以对你不需要的文件(标记多个)进行简单的还原或“撤消添加”。
答案 1 :(得分:1)
我希望你还没有做出改变。
您可以使用以下命令取消添加文件:
$ svn delete --delete --keep-local $file_name
这将取消添加文件,同时将文件保留在驱动器上。
您还可以使用以下方法撤消所有更改(包括所有添加):
$ svn revert -R .
这将还原所有文件,并且会在您添加的任何文件中取消添加,但不会删除任何内容。这还将还原已存储在存储库中的文件中所做的任何更改。但是,变更列表可以节省一天。
您还可以使用svn cl
命令在Subversion中创建更改列表:
$ svn cl FOO $file1 $file2 $file3
$ svn cl FOO $file4 $file5
这将创建一个名为FOO
的更改列表,其中包含上述五个文件。请注意,您只需提供更改列表名称和新文件即可添加到更改列表。删除文件:
$ svn cl --remove $file4
这将从更改列表$file4
中删除FOO
。
$ svn cl BAR $file1
这会从更改列表$file1
中删除FOO
并将其放在更改列表BAR
上。
现在,这就是所有这一切......
$ svn revert --cl FOO -R .
这将还原所有文件,但 仅包含更改列表FOO
中的文件。未触及所有其他文件。因此,您可以创建要 unadd 的所有文件的更改列表,然后在该更改列表上使用svn revert
命令。这将保留您的文件,但同时 unadd 。
因此,创建一个您想要 unadd 的所有文件的更改列表,然后在该更改列表上执行svn revert
。
你可以这样做:
$ svn list | awk '$1 == A' '{print $2}' | tee files_to_unadd_list.txt
这将为您提供添加到Subversion的所有文件的列表,并将其放入列表中。然后,您可以编辑该列表以删除要保留的文件。结果是您要 unadd 的文件列表。
然后你可以像这样处理它:
$ while read file
do
svn revert --force --keep-local $file
done < files_to_unadd_list.txt
或者,首先创建一个更改列表:
$ while read file
do
svn cl UNADD $file
done < files_to_unadd_list.txt
然后浏览该列表,验证它,然后:
$ svn delete --cl UNADD -R .
答案 2 :(得分:1)
如果您的更改不包含svn copy或svn move,则撤消所有svn添加并保留更改的最简单方法之一是: