如何在svn和/或者git中"取消版本"文件

时间:2020-03-05 18:43:13  来源:igfitidea点击:

它一直在我身上发生。我不小心对文件进行了版本控制,但又不想对它进行版本控制(例如,特定于开发人员/计算机的配置文件)。

如果提交此文件,则会弄乱所有其他开发人员机器上不满意的路径。

如果我确实从版本控制中删除了该文件,则将从其他对其感到不满意的开发人员机器上将其删除。

如果我选择从不提交文件,那么我总是感到"不满意",我对此感到不满意。

是一种从版本控制"取消版本"文件的干净方法,这将导致没有人不满意吗?

编辑:试图澄清一点:我已经将文件提交到存储库,并且只想从版本控制中删除它,我特别不希望从进行结帐的每个人中实际删除它。我最初希望它被忽略。

答:如果我可以接受第二个答案,那就是这样。它回答了我关于git的问题,可接受的答案是关于svn。

解决方案

回答

如果我们不小心在svn中"添加"了文件但尚未提交,则可以还原该文件,它将删除添加的文件。

回答

要删除源控制中已经存在的文件:

git rm <filename>

接着

git commit -m ...

我们应该将每个要忽略的文件添加到.gitignore文件中。另外,我总是将.gitignore文件检查到我的存储库中,因此,如果有人在他的计算机上签出代码,并且再次生成该文件,他将不会"将其视为"肮脏"。

当然,如果我们已经提交了文件并且其他人在另一台计算机上进行了更改,则必须更改每个本地存储库才能修改历史记录。至少这是git的可能解决方案。我认为svn不会让我们这样做。

如果文件已经在主存储库(git)或者服务器(svn)中,我认为没有比在另一个提交中删除文件更好的解决方案了。

回答

对于SVN,我们可以还原尚未提交的文件。在TortoiseSVN中,只需在提交窗口中右键单击该文件,然后选择"还原..."。

在命令行上使用svn revert [file]

因为我从没使用过,所以不了解GIT。

回答

据我所知,一旦提交,没有简单的方法可以从svn中的版本控制中删除添加的文件。

我们必须将文件保存在其他位置,然后从版本控制中将其删除。然后再复制一次备份。

毕竟这是一个版本控制系统...;)

回答

查找svn:ignore和.gitignore这些功能使我们可以在结帐时拥有一些其他文件,而这些文件会被RCS忽略(在执行"状态"操作或者其他操作时)。

对于特定于计算机的配置文件,一个不错的选择是检入一个带有额外" .sample"扩展名的文件,即。 config.xml.sample个别开发人员将在config.xml中复制该文件,并对其进行调整。使用svn:ignore或者.gitignore可以确保未版本化的config.xml文件不会一直显示为脏文件。

响应编辑:如果现在从存储库中删除文件,则开发人员在下次进行更新时会发生冲突(假设他们都已更改了系统文件)。他们不会丢失本地更改,可以从某个地方恢复。如果他们碰巧没有进行任何本地更改,则它们的配置文件将消失,但是他们可以从源代码控制中重新获得前一个文件并使用它。

回答

我们可以使用global-ignore设置从颠覆中排除文件
http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2
查看文档以了解详细信息

回答

没有尝试过...

在git中,如果更改尚未传播到另一个存储库,则应该能够对受影响的文件git rm git rebase --interactive重新排序删除提交,使其在提交之后我们不小心添加了有问题的文件,然后将这两个提交压缩在一起。

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

回答

听起来我们已经添加了文件并将其提交给Subversion(我假设我们正在使用Subversion)。如果真是这样,那么只有两种方法来删除该文件:

  • 将文件标记为已删除并提交。
  • 执行svnadmin dump,过滤掉我们意外提交文件的版本,并执行svnadmin load

相信我,我们真的不想做第2个。它将使存储库的所有工作副本失效。最好执行1号操作,将文件标记为已忽略并表示歉意。

回答

要从git存储库中完全删除文件(例如,我们提交了其中包含密码的文件,或者不小心提交了临时文件)

git filter-branch --index-filter 'git update-index --remove filename' HEAD

然后,我认为我们必须提交,如果它在远程分支中,则推-f(请记住,如果我们开始更改存储库的历史记录,可能会使人烦恼..如果他们以前从我们那里拉过,他们仍然可以拥有该文件)

回答

I there f I choose to never commit the file, I always have a "dirty" checkout - I am unhappy.

关于这一点,我们可能需要.gitignore
其他建议的文件,或者使用类似的方案
在此描述
回答
我的

回答

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

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

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

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

回答

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

git rm --cached <filename>