在网站部署中使用git的最佳实践

时间:2013-03-05 14:59:11

标签: git

我正在公司实习五个月,我将改变开发人员访问文件的方式,即git而不是普通的ftp访问。 git的一切都很好,直到现在,我对使用它一个月后的用法有点熟悉。

这就是我现在想到的:

enter image description here

我们正在使用beanstalk作为repo hoster,它带有一个非常简单的部署功能,因此该部分被覆盖。让我思考的部分是分支。我想要创建一个名为“Live”的分支,而只是“master”。 master将部署到开发网站(图片右上角),live分支将部署到实时网站。此外,实时网站部署将是手动的,但主人应该自动,到目前为止,没有问题。

当我想到现场网站发生微小变化的情景时,会有一些变得复杂的地方。假设我需要更改一些随机div的填充,我不想将最新版本用半实现的api部署到实时网站,我只想部署小改变,这是可能某种方式?

我现在看到的方法是在两个地方进行修复,首先拉动主分支并修复它,然后对实时分支执行相同操作。但是,如果发生更大的变化,这将变得更加困难。

此外,由于我们几乎都使用Wordpress,因此大多数数据都将存储在数据库中。这真的很好,因为我们只需要不时地克隆实时数据库,我们就完成了。但是当图像上传发挥作用时,东西变得非常难看。回购中会有一些图片(因为我们从一开始他们就没有使用git从一个完整的副本)而后来添加的其他将只是坐在ftp目录中,假装他们在回购!

最好不要在git 中包含缓存和媒体这样的文件夹,或只包含一些,或者只是偶尔更新一次?

这几乎是我最大的两个问题。

tl; dr:如何对一个过时的分支进行小的更改,而不进行两次(也适用于master)。 git repo中缓存/媒体文件的正常用法是什么?

1 个答案:

答案 0 :(得分:15)

我建议你阅读git flow

它解决了这个问题。

基本上你有以下分支:

  • master:你称之为“Live”
  • 开发:这就是发展的地方
  • 功能:对于在开发期间发生的更大变化,这些变化太过中断,无法在正常的开发分支上执行
  • 修补程序:这是您的小修补程序。

重要的部分是哪个分支基于其他分支:

  • develop将脱离大师。
  • 功能将分支开发。
  • 修补程序将从master分支出来。

开发的变化在经过全面测试后将合并为主人。合并为主意味着:这是一个版本,所有测试都已完成。

这意味着master总是包含当前的实时状态,因此保证从master分支修补程序不会引入开发所做的任何其他更改。

这只是对git flow实现的branching model的简短描述。我建议你完整阅读。它还有一些漂亮的图形:)