我是GIT的新手,不知道它能满足我的需求多少,但看起来令人印象深刻.
我有一个用于不同客户的webapp(django + javascript)
我计划使用GIT来处理这些不同的客户版本作为分支.每个客户都可以拥有自定义文件,文件夹和设置,改进版本......但应该共享相同的"核心".我们是一个小团队,并且还有一个github帐户.
分支是处理这种情况的好方法吗?
关于设置文件,您将如何进行?您是否.gitignore客户特定的设置文件并添加settings.xml.sample文件,例如repo?
另外,有什么办法可以阻止某些文件合并到master中?(但已提交给客户部门).例如,id喜欢将一些客户数据保存到客户分支,但是阻止将其提交给主服务器.
.gitignore文件是否特定于分支?是
编辑 阅读完所有答案后(谢谢!)我决定首先重构我的django项目结构,以隔离应用程序子文件夹中的核心和我的不同应用程序.这样做可以实现更清洁的项目,并且调整.gitignore文件可以轻松使用git分支来管理不同的客户和设置!
菊.
我不会使用分支来完成你想要做的事情.
在源代码管理中,分支旨在用于要合并回主干的内容.例如,Alex Gaynor花了他的夏天代码在Django的一个分支上工作,允许支持多个数据库,目标是最终将它合并回Django主干.
结帐(或克隆,在Git的情况下)可能更适合你想要做的事情.您将创建一个包含所有项目基本文件(和.sample文件,如果愿意)的repo,并将repo克隆到您希望部署代码的所有不同位置.然后在每个部署中手动创建配置和自定义文件(注意不要将它们添加到存储库中).每当您更新仓库中的代码时,请在每个部署上运行一个拉动以更新代码.中提琴!
除了cpharmston的答案之外,听起来你需要做一些重构来分离出每个客户真正定制的内容和不适合的内容.然后,您可以考虑添加其他存储库来跟踪每个客户端的自定义(全新的存储库,而不是分支).然后,您的部署可以从主仓库中提取"核心",并从该仓库中提取客户特定的内容.