我正在使用git来管理扩展的CodeIgniter框架。它是当前CI版本的克隆,带有额外的助手,库等。
我有很多网站都在使用这个框架,如果我在一个网站中添加新的帮助方法或修复错误,我希望能够轻松更新所有其他网站,而不会覆盖任何自定义文件。
我希望实现以下工作流程
git init
以初始化空白的本地git repo git remote add origin git@github.com:username/framework_repo
git pull origin master
git push origin master
多数好,但是:
最好的方法是什么?一些.gitignore伏都教? 我已经使用.gitignore来忽略文件了,但在这种情况下它略有不同,因为我只想在第一次请求时提取文件。
我希望这是有道理的。
答案 0 :(得分:5)
- 不应提交config.php和database.php等文件 回到原来的远程仓库 每个网站都独一无二。
将不应该在repo中的所有文件放入.gitignore
文件中。这几乎不是任何vodoo,它只是一个应该被忽略的文件列表。
- 但是我希望它们存在于远程仓库中,所以在第一次拉动时 请求默认文件 下载到我的本地目录。
创建像config.default.php
这样的虚拟文件,并在第一次拉到被忽略的名称后复制它们。
- 如果我从远程仓库执行另一次拉取更新,则更多 框架我不希望这些文件 被覆盖
完成第一步到步骤!
答案 1 :(得分:2)
config.php
添加到您的.gitignore
。config.php-dist
post-receive
,如下所示。git pull
之后执行,但只有在config.php
不存在时才会执行此复制。 post-receive
示例(根据您的需求定制):
#!/bin/bash
[ -f 'config.php' ] || cp config.php-dist config.php
答案 2 :(得分:0)
我认为您想要的是每个自定义站点的多个分支以及公共文件的额外上游分支。每个分支的存在并没有太大的区别(或者如果你有多个副本)。
当您对公共文件进行更改时,您可以直接在公共分支上进行更改,也可以在其中一个自定义分支上创建签入,然后将其选择到公共分支上。您不希望将更改推送到公共分支,因为这将采用自定义和修复。从公共分支到自定义分支是安全的,因为您所做的任何更改都将合并。