我有一个文件曾经被 SVN(我使用 TortoiseSVN)版本控制。这个文件现已过时,所以我不再希望它存在于我的版本库工作副本中。然而,保留该文件的历史记录可能是有益的。
实际上,我想要“删除”该文件,使其不再被跟踪或“版本化”。我可以选择“删除”该文件或“取消版本控制”该文件。
“删除”和“取消版本控制”之间有什么区别?每个命令的用例是什么?
我有一个文件曾经被 SVN(我使用 TortoiseSVN)版本控制。这个文件现已过时,所以我不再希望它存在于我的版本库工作副本中。然而,保留该文件的历史记录可能是有益的。
实际上,我想要“删除”该文件,使其不再被跟踪或“版本化”。我可以选择“删除”该文件或“取消版本控制”该文件。
“删除”和“取消版本控制”之间有什么区别?每个命令的用例是什么?
为了使事情更容易,让我们考虑以下类比。
从SVN的PoV来看,就像:
一个(源)文件由以下组成:
同样地:
一个文件夹由以下组成:
一系列项目:它的子项:
文件夹
文件
假设我们有一个SVN文件:
在修订版M中,该文件中的一行代码(我们将其作为最后一行以更好地说明示例)已被修改。我有一个 删除 选项
我没有一个 取消版本控制 选项,但是
我有一个 删除(保留本地) 选项 - 可以用更好的名称来表示 取消版本控制。在命令行方面,这相当于 svn delete --keep-local
在对文件执行其中一个操作后,该文件将不再受 SVN 跟踪,但与 删除 不同(其中文件也从工作副本/磁盘中删除),取消版本控制 将其留在磁盘上,就像用户手动将其复制到那里一样(随后的 svn st
将“看到”该文件未受版本控制:第一列将是一个问号 (?),如 [RedBean.SVNBook]: svn status 中所述)。
[TortoiseSVN]: Deleting, Moving and Renaming中包含的官方信息非常少。
个人认为,除了在修复错误时保留本地文件外,没有任何意义,例如删除先前提交到代码库中不属于库的项(特定于用户):
Eclipse:.classpath,.project
PyCharm:.idea
VStudio:.vcxproj.user
[RedBean.SVNBook]: svn delete指出:
使用--keep-local
选项来覆盖默认的svn delete行为,该行为还会删除计划进行版本控制的目标文件。当您意识到不小心提交了一个需要保留在工作副本中但不应添加到版本控制的文件时,这很有帮助。