如何"删除"已存在于SVN存储库中的文件而不从文件系统中删除它?
欢迎使用TortoiseSVN或命令行说明.
以下作品,但我希望有更好的东西:
它总是发生在我身上.我不小心版本文件,我不想被版本化(即开发人员/机器特定的配置文件).
如果我提交这个文件,我会搞乱所有其他开发者机器上的路径 - 他们会不高兴.
如果我从版本控制中删除该文件,它将从其他开发者机器中删除 - 他们会不高兴.
如果我选择永远不提交文件,我总是有一个"脏"的结账 - 我不开心.
是一种干净的方法来"修改"来自修订控制的文件,这会导致没有人感到不快乐吗?
编辑:尝试澄清一点:我已经将文件提交到存储库,我只想将其从版本控制中删除 - 我特别不希望它从每个人进行结账时被物理删除.我最初希望它被忽略.
答:如果我能接受第二个答案,那就是这个.它回答了关于git的问题 - 接受的答案是关于svn.
之前已经提出过这个问题的变化,但似乎没有提到令其他团队成员感到不安的问题.在现有帖子中(请参阅如何"取消"svn和/或git中的文件),接受的答案通常是运行svn rm FILE
或svn rm --keep-local FILE
,然后svn:ignore
根据需要设置属性.我花了最后20分钟玩这个(在两个地方检查一个回购,从一个删除一个文件,然后更新另一个,等等).这是我发现的(我正在使用SVN 1.6.16):
首先,从我所知道的--keep-local标志不会影响将要从存储库更新的其他所有人发生的事情.对于他们来说,它看起来就像你刚刚做了一个常规的svn delete
(没有一个我见过的明确提到的subversion文档 - 也许很明显你还在做一个svn delete
操作而且"保持本地"只会影响事物在当地方面,但对我来说并不一定明显).
因此有两种情况 - 1.团队成员A删除团队成员B没有本地修改的文件或2.团队成员A删除团队成员B 确实具有未提交的本地更改的文件.
在1中,删除发生后B的文件已被删除.他现在必须自己恢复它(svn merge -rHEAD:XXX FILE; svn revert FILE
即将FILE的XXX版本恢复到工作目录中并且在下一次提交时不再重新提交)
在2中,B在更新时看到树冲突,并且FILE现在具有 A + C
在其下面具有消息"本地编辑,在更新时传入删除"的状态.在这一点上,我不确定推荐的解决方案是什么.我做的是将FILE复制到其他地方,只是为了安全,然后运行svn revert FILE
.它最终是不必要的,因为FILE在工作目录中仍然存在未版本化,所有本地修改都保持不变.但是我不知道我有多信任这个,因为我已经svn revert
在其他场景中删除了我未提交的更改.
TL;博士:是不是真的,只有到联合国版本的方式在SVN文件是从每个人的其他工作目录的团队将其删除,并让他们找回自己的情况?我使用--keep-local错误,还是错过了另一个类似的选项?
如何从SVN版本控制中删除文件?
svn:ignore
在回购中添加文件.我想删除并忽略此文件,因此不需要始终为每个人的每次提交手动删除它,而不是在任何人本地删除它.
此处找到的"解决方案"不起作用:https://stackoverflow.com/a/2038639/579078