在任何项目中至少有一个配置文件是很常见的.每次与我分享项目时git,我都遇到同样的问题:
显然,必须以某种方式忽略配置,以防止开发人员特定数据泛滥到主存储库.现在有几种我常用的方法,每种方式都有一些缺陷:
.gitignore 配置文件
.git/info/exclude或设置git update-index --assume-unchanged ...为文件
.gitignore)_original在具有真实文件的情况下分发以后缀为例的配置文件.gitignore.然后每个开发人员将文件重命名为真实姓名
有没有其他可能更好的方法来处理这个问题?我怀疑我缺少一些东西,至少是一些插件.
Von*_*onC 21
过滤器驱动程序是实现选项3的"自动"方式,详见" 当您在项目中拥有密钥时,如何才能推送到GitHub? ":

该结果smudge将在结帐时显示:
从那里开发人员可以对这些配置文件进行任何类型的修改.
这没关系,因为clean脚本在提交时会将该文件的内容恢复为其原始(模板)值.没有意外的推动.
pla*_*gue 17
我在上一个项目上做的方式就是有一个主配置文件加载用户本地配置文件(如果它存在)可能会覆盖master中设置的默认值(如果指定)并声明它自己的配置信息(如果不存在)在主人.本地文件已添加到gitignore.这样所有常见的东西都可以共享,一些配置总是存在,每个开发人员都可以修改他们的本地.
由于花了我一段时间才想出使用@VonC提示的可行解决方案,因此这里有一个完整的示例,说明如何使用Objective-C头文件中的git clean过滤器忽略密码。
假设你有一个名为默认的配置脚本Config.h包含此
// Change "12345" to your password
#define kPass @"12345"
#define kConstant 42
Run Code Online (Sandbox Code Playgroud)创建hidepass.sh与关键行匹配的脚本,并打印默认行
#!/bin/sh
awk '{ if (/#define kPass/) print "#define kPass @\"12345\""; else print $0; }'
exit 0
Run Code Online (Sandbox Code Playgroud)使脚本可执行并添加到仓库中
告诉git通过添加以下行来过滤您的配置文件.gitattributes(还将.gitattributes添加到您的仓库中)
Config.h filter=hidepass
Run Code Online (Sandbox Code Playgroud)告诉git 在清理过程中将hidepass.sh脚本用于hidepass过滤器:
git config filter.hidepass.clean ./hidepass.sh
Run Code Online (Sandbox Code Playgroud)就是这样,您现在可以更改密码,Config.h但是git不会提交此更改,因为它始终将该行替换为签入中的默认行。
这是单行密码的快速解决方案,您可以发疯,例如使用特殊的字符串结束要忽略的行,并检查该字符串是否存在。
| 归档时间: |
|
| 查看次数: |
11786 次 |
| 最近记录: |