好吧,我只想检查我的git设置的工作流程是正确的,并且在开始正确使用它之前,我会完全理解它。我正在遵循此工作流程,此主题将从初始化和创建功能分支开始,然后当我对此我充满信心时,我将为发布和hotfix创建一个新主题。希望这将帮助其他希望在类似工作流程中使用git的人。
有3个开发人员,我们称他们为A,B和C,他们都将在本地机器上工作,我们有4个远程服务器 - "开发","登台","生产"和Unfuddle(作为集中式服务器)。开发人员A在其本地计算机上具有文件目录。
所以,我认为工作流将如下。
首先,我需要在脱机上创建存储库,然后将我的文件推到Unufuddle Server。
-
在未分类中创建一个名为"网站"的存储库,并将其缩写为'web'
-
在"开发","分期"one_answers"生产"服务器上创建一个SSH Keypair,然后将它们添加到Unduddle帐户中。
-
开发人员A在其文档根中初始化git存储库:
git init
-
将Ununddle存储库与开发人员A的本地相关联,并将其指定为上游服务器:
git remote add unfuddle git@subdomain.unfuddle.com:username/web.git
git config remote.unfuddle.push refs/heads/master:refs/heads/master
-
开发人员A将所有文件添加到索引
git add *
-
开发人员a会提交所有文件
git commit -am 'initial commit'
-
开发人员A推动本地做出的承诺,以求解git存储库。
git push unfuddle master
我现在应该在我的Untuddle存储库中查看我的所有文件。开发人员B和C现在可以克隆存储库以获取网站文件的副本。
`git clone git@subdomain.unfuddle.com:username/web.git`
特征分支:
每个开发人员现在可以开始使用以下工作流来创建功能分支:
-
git checkout -b develop
-
git checkout -b featuretest develop
- 进行任何代码更改
-
git commit -a -m "Make test code changes"
-
git checkout develop
-
git merge --no-ff featuretest
-
git branch -d featuretest
-
git push unfuddle develop
好,所以我不确定下一部分。我们已经将功能更改推向了集中式Untuddle服务器,但是其他开发人员需要进行更改,因此他们需要创建一个"开发"分支,然后进行git pull unfuddle develop
?我读了一个提取,合并比拉拉更好,这是这样吗?如果是这样,它将是git fetch unfuddle develop
,则git merge develop
?
听起来很固体。
关于pull
vs fetch
,我认为,如果您确切地知道拉力的功能(fetch
/merge
),则可以自由使用。许多新来者都使用pull
而不了解它的作用,但似乎您可以掌握它。我只是确保您的团队知道有什么区别。
我没有看到的唯一步骤是向您的Web服务器部署 - 这些部署也应该在更新上执行fetch
/merge
或pull
。您可能想从此过程开始是手动的,并考虑将来自动化它。您应该能够使用git钩(应在脱掉中支持它们)。这些脚本在您正在运行的服务器类型上会有所不同。