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



好吧,我只想检查我的git设置的工作流程是正确的,并且在开始正确使用它之前,我会完全理解它。我正在遵循此工作流程,此主题将从初始化和创建功能分支开始,然后当我对此我充满信心时,我将为发布和hotfix创建一个新主题。希望这将帮助其他希望在类似工作流程中使用git的人。

有3个开发人员,我们称他们为A,B和C,他们都将在本地机器上工作,我们有4个远程服务器 - "开发","登台","生产"和Unfuddle(作为集中式服务器)。开发人员A在其本地计算机上具有文件目录。

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

首先,我需要在脱机上创建存储库,然后将我的文件推到Unufuddle Server。

  1. 在未分类中创建一个名为"网站"的存储库,并将其缩写为'web'

  2. 在"开发","分期"one_answers"生产"服务器上创建一个SSH Keypair,然后将它们添加到Unduddle帐户中。

  3. 开发人员A在其文档根中初始化git存储库:

    git init

  4. 将Ununddle存储库与开发人员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. 开发人员A推动本地做出的承诺,以求解git存储库。

    git push unfuddle master

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

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

特征分支:

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

  1. git checkout -b develop
  2. git checkout -b featuretest develop
  3. 进行任何代码更改
  4. git commit -a -m "Make test code changes"
  5. git checkout develop
  6. git merge --no-ff featuretest
  7. git branch -d featuretest
  8. git push unfuddle develop

好,所以我不确定下一部分。我们已经将功能更改推向了集中式Untuddle服务器,但是其他开发人员需要进行更改,因此他们需要创建一个"开发"分支,然后进行git pull unfuddle develop?我读了一个提取,合并比拉拉更好,这是这样吗?如果是这样,它将是git fetch unfuddle develop,则git merge develop

听起来很固体。

关于pull vs fetch,我认为,如果您确切地知道拉力的功能(fetch/merge),则可以自由使用。许多新来者都使用pull而不了解它的作用,但似乎您可以掌握它。我只是确保您的团队知道有什么区别。

我没有看到的唯一步骤是向您的Web服务器部署 - 这些部署也应该在更新上执行fetch/mergepull。您可能想从此过程开始是手动的,并考虑将来自动化它。您应该能够使用git钩(应在脱掉中支持它们)。这些脚本在您正在运行的服务器类型上会有所不同。

最新更新