在网站部署中使用git的最佳实践
目前我正在一家公司实习五个月,我打算改变开发人员访问文件的方式,也就是git,而不是普通的ftp访问。git的一切都很好,直到现在,在使用了一个月之后,我对它的用法有点熟悉 这就是我现在的想法: 我们使用beanstalk作为一个repo宿主,它附带了一个部署功能,工作起来非常简单,所以这一部分已经涵盖。让我思考的部分是分支。我在考虑做一个名为“活”的分支,只是“主”。master将部署到开发网站(图片右上角),live分支将部署到live网站。此外,现场网站部署将是手动的,但主控应该是自动的,到目前为止,没有问题 当我想到一个对live网站进行小改动的场景时,事情就变得复杂了。比如说,我需要更改一些随机div的填充,我不想将带有半实现api的最新版本部署到实时网站,我只想部署一个小更改,这有可能吗 我现在看到的是在两个地方进行修复,首先拉动主分支并修复它,然后对活动分支执行相同的操作。但随着更大的变化,这将变得更加困难 而且,由于我们几乎所有的东西都使用Wordpress,所以大部分数据都存储在数据库中。这真的很好,因为我们只需要不时克隆实时数据库,我们就完成了。但当图像上传开始起作用时,事情变得非常糟糕。repo中会有一些图像(因为我们从一开始就没有使用git,它们是从完整的副本中出现的),而其他稍后添加的图像将只是坐在ftp目录中,假装它们在repo中 最好不要在git中包含缓存和介质之类的文件夹,或者只包含一些,或者只是偶尔更新一下 这几乎是我最大的两个问题 tl;dr:如何将小更改提交到过期的分支,而无需执行两次(也适用于master)。在git回购中,缓存/媒体文件的正常用途是什么?我建议您仔细阅读 它解决了这个问题 基本上,您有以下分支:在网站部署中使用git的最佳实践,git,Git,目前我正在一家公司实习五个月,我打算改变开发人员访问文件的方式,也就是git,而不是普通的ftp访问。git的一切都很好,直到现在,在使用了一个月之后,我对它的用法有点熟悉 这就是我现在的想法: 我们使用beanstalk作为一个repo宿主,它附带了一个部署功能,工作起来非常简单,所以这一部分已经涵盖。让我思考的部分是分支。我在考虑做一个名为“活”的分支,只是“主”。master将部署到开发网站(图片右上角),live分支将部署到live网站。此外,现场网站部署将是手动的,但主控应该是自动的
- 师父:你所说的“活”
- 发展:这就是发展发生的地方
- 特性:用于开发过程中的较大更改,这些更改太过中断,无法在正常的开发分支上执行
- 修补程序:这是一个为您的小修补程序
- 发展将分支的主人
- 功能将从开发中分离出来
- 修补程序将从主程序分支
这只是对git flow实现的应用程序的简短介绍。我建议你通读一遍。它还有一些漂亮的图形:)这个问题不是更适合程序员吗。se?我不知道,从来没有去过那里。我想应该看一看。:)以下是最佳实践:不要将Git用作部署工具。使用-猜猜是什么-专门的部署工具。这看起来真是太棒了!我今晚要调查这件事。它唯一不能修复的是用Wordpress的上传功能添加的文件。@Gideon:我真的不明白那部分:)为什么不干脆
git添加它们呢?你不能“@”我,因为你在评论我的答案。无论如何,我都会得到通知:)我不知道beanstalk和所有其他相关软件,所以我可能在这里建议胡说八道。但还是有一些想法:git在接收文件的服务器上克隆您的存储库,使文件自动位于正确的子目录中。定期向此目录中的所有新文件添加cronjob。git Add.
,git commit
,git push
。有关如何创建git工作的cronjob,请参阅(向下滚动至“第2部分”)。它可以拉,但你应该能够轻松地调整为“添加、提交、推”。@Gideon:如果你总是只使用一个功能,是的。一个小例子:我是某个软件的唯一开发者。尽管如此,我仍在开发develope
和两个功能分支。在开发时,我检查一些小的修复,例如:注释中的输入错误、变量重命名、小错误修复等。在一个功能分支上,我开发了一个新功能,其开发需要一些时间。在另一个特性分支上,我执行一些中等规模的重构。这两个功能分支都通过git-flow-feature-rebase
定期重设到develop上。