问题在于:我正在开发一些项目,需要以某种方式存储用于外部服务的凭据 - 例如,电子邮件地址和密码。我认为它属于“配置”,并决定将变量数据移动到程序读取的单独文件中。我不希望将此文件推送到上游,因为在我的一些较小的程序中,为了个人需要而编写,我在生产环境中进行测试,数据通常非常敏感。
另一方面,我不想要一个基本的.gitignore
解决方案或它的等价物 - 而不是根本不上传文件,我宁愿在其位置发送另一个文件,一个示例配置文件,同时将“真实”文件保留在我的计算机上。有没有简单的方法来实现它?
如果您需要更多详细信息来回答这个问题,我更喜欢关于Git VCS,Python脚本和Linux操作系统的答案。
答案 0 :(得分:1)
一种可能的解决方案:
提交并推送“示例”配置文件。然后,对本地配置文件进行所需的修改。它现在将在Git中标记为已修改。
使用git update-index --assume-unchanged config
永久忽略配置文件的未来本地修改(使用--no-assume-unchanged
恢复跟踪修改)。
这样,您将在上游仓库中拥有一个示例配置,在您的仓库中有一个自定义配置,并且您不会意外提交更改的配置,因为Git不会将其标记为已修改。
答案 1 :(得分:0)
您可以做的另一件事是使用.gitattributes过滤器。它允许您指定某些文件以通过unix命令进行管道传输。您可以编写一个ruby脚本来清除密码并用虚拟值替换它们,或者只使用sed或awk。嘿,你可能会比这更疯狂,并将其用于一些非常危险的事情。 See this other answer for some details