最近我们开始探索 GIT,目标是让我们的开发人员能够在任何地方工作,其次是自动化整个部署过程。
我们有一个中央测试服务器,我们托管所有应用程序/站点以进行测试和/或演示目的,一旦开发和测试完成,我们将应用程序移动到各自的实时服务器。
无论我用 GIT 设置什么,如下
1. 在测试服务器上创建一个裸仓库
2. 为每个涉及的开发人员获取一个本地克隆,开发人员将推送到远程(测试服务器)开发分支
3. 有人将合并所有更改dev 分支到 master 分支并将其推送到远程
4. 测试服务器(裸仓库)有一个 post-receive 挂钩,它将 master 分支签出到 public_html 文件夹(使用 GIT_WORKING_DIR 和 checkout -f)。
到目前为止,一切正常,我可以在托管页面上的主分支上看到合并(当然是在测试服务器上)。现在我的问题是……
1. 我这样做对吗?
2. 我猜我设置的 post-receive 钩子也会在推送到 dev 分支时执行。如何避免这种情况?
3. 如何将这些内容发送到我的实时服务器?由于我有一些具有大型代码库的项目,因此检查测试服务器上的所有内容然后将其发布到现场看起来还不够好。
我听说过 CI 服务器,但据我所知,他们在本地签出并使用“rsync”(不知道它是否只是同步更改或上传所有内容)或此类工具上传所有内容。如果出现任何问题,我只是想避免一切都成为一部分,并保持一个选项可以回滚。我擅长在实时服务器上设置 git。