让所有人的git忽略已经被跟踪的文件(但不从仓库中删除)

6
所以我可以做这样的事情:停止跟踪git中的文件(而不删除它们)。但这只影响我的git。
有一些默认设置文件已经被远程仓库跟踪,如何在不删除文件的情况下取消对该文件的跟踪?我不想从远程仓库中删除它,但是该文件对于运行应用程序是必需的,因此任何进行新安装的人都需要该文件,因此他们在进行git克隆时应该拥有该文件。
但是对于开发人员来说,任何人都可以更改文件,但是这些更改永远不应该被跟踪,只有默认值应该保留在远程仓库中。
我尝试将文件添加到.gitignore列表中,但它不起作用——因为它已经被跟踪了,我认为?我希望每个人都拥有该文件,但是每个人都不应该能够更改该文件。
那么我该怎么做呢?

把它放在 .gitignore 文件中,并将 .gitignore 文件提交? - Grady Player
我已经这样做了,但似乎更改仍然存在,我猜这是因为git已经跟踪了它们? - Farid
文件将会在那里,如果您需要删除文件,您需要使用git remove命令。进一步的更改将被忽略。 - Grady Player
将文件添加到.gitignore中,提交并推送到远程仓库,然后在git-hook中执行“git update-index --assume-unchanged”,该操作可以在“git clone”或“git checkout”时触发。 - Corey
1个回答

1
如何在不删除文件的情况下取消对该文件的跟踪?
git rm --cached -- afileToIgnore

它将从Git索引中删除,但仍会在本地磁盘上保留。
如果该文件随后被添加到.gitignore,则git状态不再显示要添加/更改的文件。
但是,这将记录该文件已从Git存储库中删除,这不是您想要的。
因此,实际解决方案是将相同的文件添加为模板。
 copy aFileToIgnore aFileToIgnre.tpl
 git add aFileToIgnre.tpl
 git commit -m "record template value file"

然后声明一个涂改内容过滤驱动程序,它会自动重新生成那个文件(被忽略,因为它在.gitignore中)

https://git-scm.com/book/en/v2/images/smudge.png

"

smudge脚本(可以进行版本控制)

"
copy aFileToIgnore.tpl aFileToIgnre

另请参阅 "如何在存储库/项目中跟踪特定于系统的配置文件?"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接