如何从版本控制删除文件而不删除它?

如果运行 svn rm file,文件将从本地工作副本中删除。

我现在要做的是:

$ cp file file2
$ svn rm file
$ svn ci
$ mv file2 file

如何避免 svn 在使用 svn rm时也删除本地文件?

88089 次浏览

您需要 --keep-local命令行选项。这将从版本控制中删除该文件,而不需要从文件系统中删除该文件。

$ svn rm --keep-local my_important_file

注意: --keep-local仅影响您的副本的 svn rm。其他用户可能删除了文件的本地副本,除非由于他们所做的更改,他们的本地副本和存储库之间存在冲突。这可能不是我们想要的结果。请看下面的评论。

我没有这个问题的答案,但是我有一个相关问题的答案,那就是如何从版本控制中删除目录中的所有文件(即不是特定的文件)而不在本地删除它们。这个解决方案来自 Scientific Linux 实现。

ls -a .svn

应该显示存储控制数据的 svn 目录:

rm -r .svn

将删除此目录。然后键入:

svn status

将产生“警告: 此目录不是工作副本”错误,因为它不再受版本控制。

希望这个能帮上忙。

从 SVN 中删除文件而不在本地删除它是一个常见的问题。一个突出的例子是文件。Eclipse 项目中的类路径。只要项目中使用的所有机器都安装了相同的 Eclipse 和 Java,将这个配置文件放在 SVN 下是非常好的。一旦违反了这个条件,提交就开始破坏其他 Eclipse 项目。这就是从 SVN 中删除一个文件而不需要在任何地方删除 ist 的地方。

svn rm --keep-local .classpath

在一台机器上完美地完成了这项工作。

问题是其他机器可能会丢失该文件(在更新时)或在提交时恢复它。SVN 的缺点是既不能在存储库中处理 --keep-local,也不能将其传播到其他工作副本。因此,在所有其他机器上,以上命令必须在任何提交或更新之前执行。

当然,这最多只能起到90% 的作用。删除和重新版本会突然发生。我的解决方案是让每一台机器,我都有直接或间接的访问权限,去做

svn rm --keep-local .classpath
copy .classpath .classpath-nameOfTheMachine
svn add .classpath-nameOfTheMachine

这是如此彻头彻尾的丑陋,以至于很难称之为“解决方案”。然而,它总是允许快速修复任何以后的事故。

对于那些在 svn 上使用 GUI 的用户,可以使用下面的步骤从 svn 版本控制中删除一个文件,但在本地保留它。 enter image description here