2012-03-20 67 views
171

我在CodeIgniter站点中有几个文件,我希望在仓库中拥有这些文件,但不会跟踪任何更改。例如,我将此框架的新安装部署到新客户端,我想要下载以下文件(它们具有默认值CHANGEME),并且我只需对此客户端进行特定更改(数据库凭证,电子邮件地址信息,自定义CSS)。将文件保存在Git仓库中,但不要跟踪更改

// the production config files i want the files but they need to be updated to specific client needs 
application/config/production/config.php 
application/config/production/database.php 
application/config/production/tank_auth.php 
// index page, defines the environment (production|development) 
/index.php 
// all of the css/js cache (keep the folder but not the contents) 
/assets/cache/* 
// production user based styling (color, fonts etc) needs to be updated specific to client needs 
/assets/frontend/css/user/frontend-user.css 

目前,如果我跑

git clone [email protected]:user123/myRepo.git httpdocs 

,然后编辑上面的文件,所有是伟大的。直到我发布修补程序或修补程序并运行git pull。我的所有更改都将被覆盖。

+2

可能重复[Git:文件必须分布,但忽略/不重新上传?](http://stackoverflow.com/questions/5586267/git-file-that-must-be-distributed-but-ignored-not-reuploaded) – Daenyth 2012-03-21 04:07:46

+2

[git:我可以提交文件并忽略内容更改?](http://stackoverflow.com/questions/3319479/git-can-i-commit-a-file-and-ignore-the-content-changes) – CharlesB 2012-03-25 09:36:02

+0

可能重复的[git:我可以提交一个文件和忽略内容更改?](http://stackoverflow.com/questions/3319479/git-can-i-commit-a-file-and-ignore-the-content-changes) – 2017-03-23 08:36:45

回答

45

对于我的代码点火项目,我一直database.php.exampleconfig.php.example在回购协议。

然后,添加的config.php应用程序/配置/ database.php中的.gitignore文件。因此,最后,当我部署时,我可以复制.example文件(config.php和database.php),自定义它们,并且它们不会被GIT跟踪。

+9

不错的解决方案,但我认为nasirkhan的答案是最好的。 – wordsforthewise 2015-07-26 01:38:49

+0

这不是一个好的解决方案。如果你刷新你的git索引,你会开始跟踪更改,当你不想。请参阅@nasirkhans回答正确的方式来执行此操作。 – 2015-10-01 21:14:21

+1

我不同意以前的评论。这样,更新“默认”值就变得容易了,而不必检查它们,并将本地配置复制到其他地方,以便将它们放回原处。此外,它适用于所有存储库,因此您不必执行任何重复的repo更改。 – OskarD90 2016-01-08 12:15:54

2

我会将它们放在您的.gitignore文件中,并根据需要手动复制它们。

所以骨架文件名将在git中,忽略文件名不会在git中(但会在.gitignore中)。这样,当手动步骤将它们从“模板”(比骨架更好的名称)复制到“实际”时,它们立即被忽略。

+0

theres没有办法将它们添加到首先回购,然后将它们添加到.gitignore?如果有一个解决方案来包含这些文件,但在某个提交或某事之后没有任何更改,那将会很棒。 – gorelative 2012-03-20 21:08:13

+1

@mklauber我想保持它们无限期,直到我运行'git rm '。目的是IE:一个config.php文件。我想保留配置文件,但我显然不想跟踪从客户端到客户端的数据库凭据,因为它们是不同的。 – gorelative 2012-03-20 21:13:26

+1

是的,我的问题与我们的rails database.yml文件。我们保留一个骷髅,然后复制并更改它。 – 2012-03-20 21:15:34

380

git有不同的解决方案来做到这一点。首先更改文件,你不想被跟踪,并使用下面的命令:

git update-index --assume-unchanged FILE_NAME 

,如果你想跟踪的变化再次使用这个命令:

git update-index --no-assume-unchanged FILE_NAME 

git-update-index documentation

+0

我做了你说的,但GIT状态不断告诉文件被修改 – rraallvv 2013-12-21 20:43:43

+0

工程对我来说很好。您尝试过时是否收到了“无法标记文件...”的消息? – shim 2014-07-08 04:33:56

+0

在这里工作 - 最后我的2阶段部署不会造成不间断的更改。谢谢你@nasirkhan! – 2014-08-14 12:06:12

相关问题