如何从版本控制中删除文件/文件夹,但将其保留在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
的工作流来说,这是非常不友好的。