集中式GIT工作流/部署 - 存储库初始化和功能分支

时间:2012-11-06 08:23:49

标签: git workflow branch centralized unfuddle

好的,我只是想检查我的GIT设置的工作流程是否正确,并且在我开始正确使用之前我完全理解它。我正在关注this工作流程,本主题将从初始化和创建功能分支开始,然后当我对此确定时,我将为发布和修补程序创建一个新主题。希望这将有助于其他人在类似的工作流程中使用GIT。

有3个开发人员,让我们称他们为A,B和C谁将在他们的本地机器上工作,我们有4个远程服务器 - '开发','暂存','生产'和取消混合(作为集中服务器) 。开发人员A拥有本地计算机上的文件目录。

所以,我认为工作流程如下。

首先,我需要在Unfuddle上创建存储库,然后在本地创建存储库,然后将我的文件推送到Unfuddle服务器。

  1. 在Unfuddle中创建一个名为'website'的存储库,并将其缩写为'web'
  2. 在“开发”,“暂存”和“生产”服务器上创建SSH密钥对,并将其添加到Unfuddle帐户。
  3. Developer A在其文档根目录中初始化Git存储库:

    git init

  4. 将Unfuddle存储库与开发人员A的本地存储库关联,并将其指定为上游服务器:

    git remote add unfuddle git@subdomain.unfuddle.com:username/web.git

    git config remote.unfuddle.push refs/heads/master:refs/heads/master

  5. 开发人员A将所有文件添加到索引

    git add *

  6. 开发人员A提交所有文件

    git commit -am 'initial commit'

  7. Developer A将本地提交推送到Unfuddle Git存储库。

    git push unfuddle master

  8. 我现在应该在Unfuddle存储库中看到我的所有文件。开发人员B和C现在可以克隆存储库以获取网站文件的副本。

    `git clone git@subdomain.unfuddle.com:username/web.git`
    

    功能分支:

    现在,每个开发人员都可以使用以下工作流程开始创建功能分支:

    1. git checkout -b develop
    2. git checkout -b feature\test develop
    3. 进行任何代码更改
    4. git commit -a -m "Make test code changes"
    5. git checkout develop
    6. git merge --no-ff feature\test
    7. git branch -d feature\test
    8. git push unfuddle develop
    9. 好的,下一部分我不确定。我们已将功能更改推送到集中式Unfuddle服务器,但其他开发人员需要获取更改,因此他们是否需要创建“develop”分支然后执行git pull unfuddle develop?我读过一个fetch和merge比pull更好,是这样的吗?如果是,那么git fetch unfuddle developgit merge develop吗?

1 个答案:

答案 0 :(得分:1)

听起来很稳固。

关于pull vs fetch,我认为如果您确切知道拉动的作用(fetch / merge),您可以自由使用它。很多git的新手使用pull而不了解它的作用,但似乎你已经掌握了它。我只是确保你的团队知道差异是什么。

我没有看到的唯一步骤是部署到您的网络服务器 - 这些应该在更新时执行fetch / mergepull。您可能希望从手动开始这个过程,并考虑将来自动化它。你应该可以使用git hooks(在Unfuddle中应该支持它们)。这些脚本将根据您运行的服务器类型而有所不同。