如何在svn和/或git中"unversion"一个文件

Mo.*_*Mo. 68 svn versioning git version-control

它总是发生在我身上.我不小心版本文件,我不想被版本化(即开发人员/机器特定的配置文件).

如果我提交这个文件,我会搞乱所有其他开发者机器上的路径 - 他们会不高兴.

如果我从版本控制中删除该文件,它将从其他开发者机器中删除 - 他们会不高兴.

如果我选择永远不提交文件,我总是有一个"脏"的结账 - 我不开心.

是一种干净的方法来"修改"来自修订控制的文件,这会导致没有人感到不快乐吗?

编辑:尝试澄清一点:我已经将文件提交到存储库,我只想将其从版本控制中删除 - 我特别不希望它从每个人进行结账时被物理删除.我最初希望它被忽略.

答:如果我能接受第二个答案,那就是这个.它回答了关于git的问题 - 接受的答案是关于svn.

wxs*_*wxs 67

在Git中,为了从树中删除它,而不是从工作目录中删除它,我认为这就是你想要的,你可以使用--cached标志,即:

git rm --cached <filename>
Run Code Online (Sandbox Code Playgroud)

  • 是否会在删除更改时删除其他人的文件副本? (5认同)
  • @wxs是的,它会的. (5认同)

小智 34

SVN 1.5版支持从存储库中删除/删除文件而不会丢失本地文件

取自http://subversion.tigris.org/svn_1.5_releasenotes.html

新的--keep-local选项在删除后保留路径..

删除(删除)现在使用--keep-local选项在本地保留其目标,因此即使未修改也不会删除路径.

  • 在**TortoiseSVN**中,此选项隐藏在"扩展上下文菜单"中:右键单击该文件. (15认同)
  • 然后,您可以将svn propedit与svn:ignore属性一起使用,以确保这些本地存储的文件在将来的更改中不会出现. (2认同)
  • 答:不,不!该死的! (2认同)

Gle*_*ven 8

如果您在svn中意外"添加"了一个文件并且尚未提交,则可以恢复该文件并删除添加.


Kai*_*Kai 6

没试过......

在git中,如果您的更改尚未传播到另一个存储库,您应该能够git rm受影响的文件,git rebase --interactive将删除提交重新排序为在您意外添加违规文件的提交之后,然后压缩那两个人一起承诺.

当然,如果其他人撤消了您的更改,这将无济于事.