好的,我只是想检查我的GIT设置的工作流程是否正确,并且在我开始正确使用之前我完全理解它。我正在关注this工作流程,本主题将从初始化和创建功能分支开始,然后当我对此确定时,我将为发布和修补程序创建一个新主题。希望这将有助于其他人在类似的工作流程中使用GIT。
有3个开发人员,让我们称他们为A,B和C谁将在他们的本地机器上工作,我们有4个远程服务器 - '开发','暂存','生产'和取消混合(作为集中服务器) 。开发人员A拥有本地计算机上的文件目录。
所以,我认为工作流程如下。
首先,我需要在Unfuddle上创建存储库,然后在本地创建存储库,然后将我的文件推送到Unfuddle服务器。
Developer A在其文档根目录中初始化Git存储库:
git init
将Unfuddle存储库与开发人员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'
Developer A将本地提交推送到Unfuddle Git存储库。
git push unfuddle master
我现在应该在Unfuddle存储库中看到我的所有文件。开发人员B和C现在可以克隆存储库以获取网站文件的副本。
`git clone git@subdomain.unfuddle.com:username/web.git`
功能分支:
现在,每个开发人员都可以使用以下工作流程开始创建功能分支:
git checkout -b develop
git checkout -b feature\test develop
git commit -a -m "Make test code changes"
git checkout develop
git merge --no-ff feature\test
git branch -d feature\test
git push unfuddle develop
好的,下一部分我不确定。我们已将功能更改推送到集中式Unfuddle服务器,但其他开发人员需要获取更改,因此他们是否需要创建“develop”分支然后执行git pull unfuddle develop
?我读过一个fetch和merge比pull更好,是这样的吗?如果是,那么git fetch unfuddle develop
会git merge develop
吗?
答案 0 :(得分:1)
听起来很稳固。
关于pull
vs fetch
,我认为如果您确切知道拉动的作用(fetch
/ merge
),您可以自由使用它。很多git的新手使用pull
而不了解它的作用,但似乎你已经掌握了它。我只是确保你的团队知道差异是什么。
我没有看到的唯一步骤是部署到您的网络服务器 - 这些应该在更新时执行fetch
/ merge
或pull
。您可能希望从手动开始这个过程,并考虑将来自动化它。你应该可以使用git hooks(在Unfuddle中应该支持它们)。这些脚本将根据您运行的服务器类型而有所不同。