我已经阅读了很多关于 git 分支模型的内容,并且很确定我了解其背后的过程。因此,我一直在将我对网站(使用 PHP)的所有更改推送到集中式存储库(来源)。这只是一个裸存储库。但是,我想将此代码放入测试环境。推荐的处理方法是什么?我已经阅读了很多文章,这些文章只是将 git 工作树检出到 web 根目录,但我希望它更干净。这似乎不适用于从事该项目的多个开发人员。这对于生产方面也是如此。有一个我从原产地拉入的非裸机有意义吗?
非常感谢任何有助于我朝着正确方向前进的见解/评论/想法。
我已经阅读了很多关于 git 分支模型的内容,并且很确定我了解其背后的过程。因此,我一直在将我对网站(使用 PHP)的所有更改推送到集中式存储库(来源)。这只是一个裸存储库。但是,我想将此代码放入测试环境。推荐的处理方法是什么?我已经阅读了很多文章,这些文章只是将 git 工作树检出到 web 根目录,但我希望它更干净。这似乎不适用于从事该项目的多个开发人员。这对于生产方面也是如此。有一个我从原产地拉入的非裸机有意义吗?
非常感谢任何有助于我朝着正确方向前进的见解/评论/想法。
听起来你在做 PHP,所以我会从这个角度回答。
我现在建立了一个项目,其中包含两个主要分支,master
并且develop
. 所有已完成的功能都develop
与.develop
master
对于您的部署问题,我建议您不要只签出 Web 根目录,因为这也会将存储库详细信息放在该目录中,而该目录不应该存在,理论上可能会导致合并问题或意外覆盖生产数据的几率更高在存储库中,例如配置文件或保存的 PDF 或其他内容。如果处理不当,这也是一个可能的安全问题。
我建议使用Phing 之类的东西进行部署。使用 Phing,我可以从命令行运行phing test-release
并拥有它:
develop
并确保它是最新的develop
分支推到origin
develop
分支推送到我的个人备份存储库这样做的好处是,一旦设置它就非常容易运行,而且我已经知道它不会覆盖任何我不想要的东西。我还复制了相同的脚本,更改了一些目录路径和 git 分支名称,并有一个phing www-release
. 如果将来需要,您还可以为集成服务器做好准备(即使您使用 PHP,这仍然是一个好主意)。
我想,关键是 git 不是一个部署工具,如果你尝试以这种方式将它用于任何非平凡的应用程序,以后可能会让人头疼。
对于多开发项目,IMO 最好/最简单的方法是为组的每个部分和/或成员创建一个分支,并让他们在那里提交更改。一旦完成了项目的给定部分,或者完成并测试了分支上的更改,您可以将它们合并回主节点(我假设您的意思是“orgin”)。所以,长话短说,我会为每个开发人员或项目创建分支,然后将您的更改提交到分支,一旦完成分支与 master 合并。但是,这只是我对应用程序开发和 Java 工作的看法/经验,根据您的项目,可能会有更好的方法。干杯和好运!
编辑:对于 Windows,我喜欢 TortoiseGit,我认为 GUI 对新用户有点帮助。
对于 OSX,我喜欢/每天使用 SourceTree: