如何从版本控制中删除文件/文件夹,但将其保留在Git的存储库中?

如何从版本控制中删除文件/文件夹,但将其保留在Git的存储库中?,git,version-control,ignore,Git,Version Control,Ignore,使用git rm可以在本地删除文件,从版本控制中删除文件,然后在存储库中删除文件gitrm--cached的作用几乎相同,但将文件保存在本地工作副本中 是否有可能从版本控制中删除文件/文件夹(因此其更改将被忽略),并将其保留在存储库中,这样,如果有人克隆了repo,该文件也会存在,但是不能通过简单的添加&提交?尝试将文件/文件夹添加到.gitignore已在Git下的文件,您可以使用 git update-index --assume-unchanged filename 和unigtore

使用
git rm
可以在本地删除文件,从版本控制中删除文件,然后在存储库中删除文件
gitrm--cached
的作用几乎相同,但将文件保存在本地工作副本中


是否有可能从版本控制中删除文件/文件夹(因此其更改将被忽略),并将其保留在存储库中,这样,如果有人克隆了repo,该文件也会存在,但是不能通过简单的
添加
&
提交

尝试将文件/文件夹添加到.gitignore

已在Git下的文件,您可以使用

git update-index --assume-unchanged filename 
和unigtore git更新索引--不假定文件名不变


但是,也有一些有趣的功能,

简单的答案是否定的。
.gitignore
功能只是在一开始就阻止跟踪文件。换句话说,它防止文件第一次进入存储库。然而,一旦文件被跟踪,它将永远被跟踪。将跟踪对该文件的所有更改


有两种通用解决方案。(1) 避免将该文件添加到索引中。这只是一个政策问题。(2) 将所有这些被忽略的文件放在一个归档文件中,如
unzipPerightAfterCloning.zip
。这是人们进入回购协议的一个额外步骤,但至少目标文件永远不会提交。

我已将该文件添加到.gitignore,但当我编辑它时,它仍然出现在
git status
文件列表中。我不确定为什么会发生这种情况。在我的例子中,我将几个文件添加到.gitignore中,当我进行新的提交时,这些文件不会显示在隐藏中。您是否在修改.gitignore文件后进行了提交?可能这就是我的情况下文件已被版本控制的原因
.gitignore
仅适用于尚未添加到版本控制中或已从版本控制中删除的文件/文件夹。取消跟踪文件怎么样??看看这个:-1这与问题的要求不符。因为这是无法完成的。需要注意的是,您必须在每次
add
之后和
commit
之前执行该命令。这是可行的,但对于任何涉及使用
git add--all
的工作流来说,这是非常不友好的。