我已经阅读了关于Git如何工作的书籍和视频,因此我认为我对添加、提交等方面已经非常熟悉了,但我需要关于工作流程和部署的建议。
首先,我需要知道在哪里初始化GIT仓库。它是否需要在“生产”服务器上,并且然后在“暂存”和“开发”上克隆它,每个开发人员也会将其克隆到他们的本地机器上?
其次,每个服务器是否应该有自己的分支?即“开发”将拥有一个“开发”分支,“暂存”将拥有一个“暂存”分支,“生产”将拥有一个“生产”分支?
谢谢
我最近也把我的团队从SVN迁移到了Git,我们有着相同的3个服务器的设置,分别是prod、stg和dev。
关于迁移过程,首先安装sudo apt-get install git-svn
,然后进行以下步骤..
$ git svn clone [subversion_repository_url] /path/to/git/repository
$ cd /path/to/git/repository
$ git remote add origin [gir_repo_url]
$ git push origin master
关于工作流程:
这个链接 标题为 "A successful Git branching model" 是非常有用的。它介绍了如何为团队使用 "生产-暂存-开发" 类型的工作流程。
关于部署:
在每个服务器上,我们做的是, 每个服务器上都有 git 存储库在文件系统中。 要部署,我将需要部署的相应分支打包并解压缩到 /srv/www/ 文件夹中。
例如,在 生产环境 上,要部署 主分支,
sudo git archive --format zip --output output.zip master -0
“master” 表示你想压缩的分支,这将不包括 .git 文件夹。然后在 /srv/www/ 文件夹内解压,sudo unzip output.zip -d /srv/www/app/
这相当于一个 svn export 命令。
对于 Staging 服务器,我们通常检出其中一个 Release branches 或者 Dev branches。
对于 Dev 服务器,我们检出需要进行测试的任何一个 feature-branch。
很大程度上取决于什么对你来说是正确的。
另一个答案中链接的分支模型是一个非常好的起点。
通常,您会有一个代表发布代码的master
分支。
暂存取决于您想要暂存什么 - 我们的团队有一个名为staging
的单独分支,用于持续集成服务器的暂存构建。不同的功能可以合并到此分支中以在暂存环境中进行测试。
部署将取决于您是否使用CI或直接从存储库中的分支进行部署。
我已经开发了自己的策略。它最初是基于nvie的。
http://dymitruk.com/blog/2012/02/05/branch-per-feature/
它允许即兴混合和匹配已完成的功能。这种策略的基石是每次迭代从历史上的同一位置开始每个功能。