8

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

这就是我现在的想法:

在此处输入图像描述

我们使用 beanstalk 作为 repo hoster,它带有一个非常容易工作的部署功能,所以这部分被覆盖了。让我思考的部分是分支方面的。我正在考虑创建一个名为“Live”的分支,而只是“master”。master 将部署到开发网站(图片右上角),live 分支将部署到 live 网站。另外,直播网站部署是手动的,但是master应该是自动的,到目前为止,没有问题。

当我想到对实时网站进行微小更改的场景时,它就会变得复杂。假设我需要更改一些随机 div 的填充,我不想将具有一半实现 api 的最新版本部署到实时网站,我只想部署小的更改,这可能吗?

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

此外,由于我们几乎所有内容都使用 Wordpress,因此大部分数据将存储在数据库中。这真的很好,因为我们只需要不时地克隆实时数据库,我们就完成了。但是当图像上传开始发挥作用时,事情变得非常丑陋。存储库中将包含一些图像(因为我们从一开始就没有使用 git,它们是完整副本中的),稍后将添加的其他图像将只是坐在 ftp 目录中,假装它们在回购!

在 git中完全不包含缓存和媒体之类的文件夹会更好,还是只包含一些,或者只是偶尔更新一次?

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

tl;dr:如何在不执行两次的情况下将小的更改提交到已过时的分支(也适用于 master)。git repo 中缓存/媒体文件的正常用法是什么?

4

1 回答 1

17

我建议您阅读git flow

它解决了这个确切的问题。

基本上你有以下分支:

  • 师父:你所谓的“活”
  • 发展:这就是发展发生的地方
  • 功能:在开发过程中进行较大的更改,这些更改太中断而无法在正常的开发分支上执行
  • 修补程序:这是您的小修补程序。

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

  • 开发将从master分支出来。
  • 功能将从开发中分支出来。
  • hotfix 将从 master 分支。

develop 的改动会在经过全面测试后合并到 master 中。合并到 master 意味着:这是一个发布,所有测试都完成了。

这意味着 master 始终包含当前的活动状态,因此从 master 分支一个修补程序可以保证不会引入开发所做的任何其他更改。

这只是对git flow 实现的分支模型的简短描述。我建议你完整地阅读它。它也有一些漂亮的图形:)

于 2013-03-05T15:04:41.203 回答