2012-12-11 21 views
0

我正在尝试使用git来学习和开发最佳实践。谈到分支时,我一直在阅读git流分支实践。基于这种做法我的分支应该是Git与本地开发和主分支机构的远程存储库工作流?

master 
develop 
hotfix 
feature 

我在本地机器上使用本地回购进行开发。我有两个远程裸机回购,我将推动。一个是TEST服务器,另一个是LIVE生产服务器。这两个远程回购站都有一个post-receive hook。

主分公司应该只为最终生产代码预留。那么,我可以推送到TEST服务器吗?目前,我必须将开发合并到主机,然后将本地主机推送到TEST。但是,如果在推动后我有任何编辑,主人已经改变,并没有真正准备好生产。我应该将开发分支推向测试服务器吗?然后,在最终批准合并后,开发给主服务器,然后将主服务器推送给LIVE服务器?

我不明白为什么我这么困惑?我想我害怕犯任何错误。

回答

0

实际上它非常简单,可以将您需要在测试服务器上的所有内容推送到测试服务器上。如果你的代码还没有准备好合并到master中,那么就不要将它合并,只需推动你的develop分支和/或你的主题分支。没有任何伤害,事实上,在裸仓上有许多分支是正常的。

事实上,如果你有提交钩子的话,那么你就需要所有你正在测试的分支在那里进行持续集成构建和测试。

+0

遥控器如何知道哪个分支应该处于活动状态? – MAZUMA

+0

你似乎觉得只有1个分支是活跃的,这通常不是这种情况(特别是对于测试),通常你会有你的CI软件(TeamCity,Jenkins,Cruisecontrol ...任何)你正在测试的分支。这样,你可以在长时间运行的主题分支以及你的发布分支上进行持续集成。 –

+0

是的,我对这款游戏真的很陌生。目前,虽然我只是在本网站上工作的单个开发人员。这是一个相当大的网站。我使用git来帮助我处理多个开发轨道。CI软件对单个开发人员有益吗?还是有另一种解决方案? – MAZUMA

0

我有一个类似的架构:主,修补程序和开发。

想象一下,你有一个新的功能来开发。什么是我的步骤:

每个新功能有一个新的分支:

git checkout -b issue1234 
<make some updates...> 
git commit -a -m 'mensagem' 
git push origin issue1234 

你可以用开发分支,只是为了看看它是如何工作与其他人的发展和运行测试用例合并。

git checkout dev 
git merge issue1234 
git push 

人们做了几个测试,编辑它并决定它已准备好部署!

git checkout master 
git merge issue1234 
git push 

注意,我从来没有合并发展。只是功能被合并。

我不知道这是否是最好的方法,但我总是可以知道哪些代码已针对每个功能/问题进行了更改。

+0

好的。我得到你描述的过程。我没有得到的是如何查看从浏览器推送到远程开发分支的新更改。我使用远程服务器托管正在开发的网站的副本。这是我为客户批准更改的地方。如果没有更改,我可以将分支合并到主服务器,然后推送到我的LIVE服务器。如果有变化,我可以制作并推回遥控器。 – MAZUMA