你将如何在git中设置这个场景:
我的源码有一个设置文件,其中包含配置设置,例如数据库连接凭据等...(这是一个Drupal源码,我指的是settings.php)
当开发人员克隆源时,他们需要进入并更改特定于其环境的设置。当然,这些变化不应该被推回原点。同时我希望他们能够使用这个默认模板(因为大多数模板都不会被更改)。
所以.gitignore在这里不起作用,因为我想要它们的第一个克隆。
我是否需要向每位新开发人员讲授git update-index --assume-unchanged
?
有没有更明智的方法来做到这一点?
答案 0 :(得分:8)
我会将database.php
重命名为database.php.sample
并将database.php
添加到.gitignore
。
每当有新用户出现时,只需从database.php.sample
复制到database.php
并进行相应的更改。
答案 1 :(得分:0)
更简单的方法是使用 filter driver ,并使用涂抹脚本:
在Pedro的proposition(database.php
中.gitignore
)的基础上构建:
database.php.sample
database.php
尚不存在时,通过涂抹脚本(git checkout
)将其复制到私有(即未版本化)database.php
。从git 1.7.4开始,过滤器定义中的%f
将被当前文件的路径替换;见the .gitattributes manpage
答案 2 :(得分:0)
是的。这是我已发布的解决方案。
在git add -N
然后database.php
上使用git add -p
。编辑hunk以便用占位符替换敏感数据。
之后你需要注意的一件事是,你永远不应该从存储库的根目录git add .
- 但没有人这样做,对吧? ;)