让每个人的git忽略已经跟踪的文件(但不要从存储库中删除)

时间:2018-04-25 02:07:32

标签: git

所以我可以这样做:Stop tracking files in git (without deleting them)

但这只影响我的git。

在远程存储库中已经跟踪了一些默认设置文件,如何在不删除文件的情况下删除该文件的跟踪?我不想将它从远程存储库中删除,但是该文件是运行应用程序所必需的,因此任何进行全新安装的人都需要该文件,因此他们应该在执行git clone时拥有该文件。

但是对于开发,任何开发人员都可以对文件进行更改,但是不应该跟踪这些更改,只有默认值应该保留在远程存储库中。

我尝试将文件添加到.gitignore列表中,但它不起作用 - 因为它已被跟踪,我认为?我想让每个人都拥有该文件,但每个人都不应该对文件进行更改。

那我该怎么做?

1 个答案:

答案 0 :(得分:1)

  

如何在不删除文件的情况下删除该文件的跟踪?

git rm --cached -- afileToIgnore

它将从Git索引中删除,但会在本地保留在磁盘上。

如果该文件随后添加到.gitignoregit status将不再显示该文件以进行添加/更改。

但是,这会将文件记录为从Git仓库中删除,这不是您想要的。

因此,实际的解决方案是将该文件添加为模板

 copy aFileToIgnore aFileToIgnre.tpl
 git add aFileToIgnre.tpl
 git commit -m "record template value file"

然后声明污迹 content filter driver ,它会自动重新生成该文件(忽略,因为它在.gitignore中)

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

smudge脚本(可以发布版本)

copy aFileToIgnore.tpl aFileToIgnre

另见" How can I track system-specific config files in a repo/project?"