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

问题描述:

如果我运行svn rm file,该文件将从本地工作副本中删除。如何从版本控制中删除文件而不删除它?

我现在要做的是:

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

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

+0

[SVN从存储库中删除文件而不删除本地副本]的可能重复(http://stackoverflow.com/questions/542065/svn-remove-file-from-repository-without-deleting-local-copy) – Shai 2014-06-16 13:38:29

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

$ svn rm --keep-local my_important_file 
+2

Won一旦他们更新,它仍然从其他人的系统中删除它? – Nyerguds 2015-11-09 08:20:10

+1

@Nyerguds这是正确的,因为svn rm正在从存储库中删除文件。如果您希望从回购库中删除文件,请将它们保存在本地机器上,然后使用上面的标记。 – 2016-02-22 13:31:00

+3

@GregHilston正如我所说的那样,这并不能真正帮助实际的多程序员项目。应该有一种方法可以将文件解压到任何地方。这里最常见的情况是意外提交的本地设置文件(在Java项目中很常见),但是对其进行版本控制不应该擦除其他用户的设置文件。 – Nyerguds 2016-02-22 13:36:58

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

ls -a .svn

应显示存储控制数据的SVN目录。简单地说:

rm -r .svn

将摆脱这个目录。然后键入:

svn status

将产生“警告:这个目录是不是工作拷贝”的错误,因为它不再是版本控制之下。

我希望这会有所帮助。

+0

有关的问题?删除文件并删除整个工作副本是完全不同的东西恕我直言。 – Melebius 2017-11-15 13:21:59

从SVN中删除文件而不在本地删除它是一个常见问题。一个突出的例子是Eclipse项目中的文件.classpath。只要项目中使用的所有机器具有相同的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 

这是顾左右而言他丑到几乎不称为“解决方案”。尽管如此,它总是可以快速修理任何后来发生的事故。