【问题标题】:Git remote repository workflow with local develop and master branches?带有本地开发和主分支的 Git 远程存储库工作流程?
【发布时间】:2012-12-11 20:53:06
【问题描述】:

我正在尝试使用 git 学习和开发最佳实践。关于分支,我一直在阅读 git flow 分支实践。基于这种做法,我的分支应该是

master
develop
hotfix
feature

我使用本地存储库在本地计算机上进行开发。我有两个要推送的远程裸仓库。一个是 TEST 服务器,第二个是 LIVE 生产服务器。这两个远程仓库都有一个接收后挂钩。

主分支应该只为最终生产代码保留。那么,我将哪个分支推送到 TEST 服务器?目前我必须将开发合并到主控,然后将本地主控推送到测试。但是,如果我在那次推送之后有任何编辑,那主人已经改变了,还没有真正准备好投入生产。我应该将开发分支推到测试服务器吗?然后,最终批准合并开发到master,然后将master推送到LIVE服务器?

我不明白为什么我对此感到如此困惑?我想我害怕犯任何错误。

【问题讨论】:

    标签: git repository workflow branching-strategy


    【解决方案1】:

    其实很简单,把你需要在测试服务器上的东西推送到测试服务器上。如果您的代码还没有准备好合并到 master 中,那么就不要合并它,只需推送您的开发分支和/或您的主题分支。没有什么坏处,事实上在你的裸仓库中有很多分支是很正常的。

    事实上,如果你有提交钩子来触发持续集成构建和测试,那么你需要所有当前正在测试的分支都在那里。

    【讨论】:

    • 远程如何知道哪个分支应该处于活动状态?
    • 您似乎认为只有 1 个分支处于活动状态,通常情况并非如此(特别是对于测试),通常您将拥有 CI 软件(TeamCity、Jenkins、Cruisecontrol ......无论如何) 在您正在测试的所有分支上构建项目。这样您就可以在长期运行的主题分支以及发布分支上进行持续集成
    • 是的,我是这个游戏的新手。目前虽然我只是在这个网站上工作的一个开发人员。这是一个从头开始建造的相当大的网站。我正在使用 git 来帮助我处理多个开发轨道。 CI 软件是否会对单独的开发人员有益,还是有其他解决方案?
    【解决方案2】:

    我有一个类似的架构:master、hotfix 和 development。

    假设您要开发一项新功能。我的步骤是什么:

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

    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
    

    请注意,我从不将 ma​​sterdevelop 合并。只是功能被合并。

    我不知道这是否是最好的方法,但我总能知道每个功能/问题的代码已更改。

    【讨论】:

    • 好的。我明白你描述的过程。我没有得到的是如何从浏览器查看推送到远程开发分支的新更改。我使用远程服务器来托管我正在开发的站点的副本。这是我进行更改以供客户批准的地方。如果没有更改,我可以将分支合并到 master,然后推送到我的 LIVE 服务器。如果有更改,我可以进行更改并推送回遥控器。
    猜你喜欢
    • 2010-12-04
    • 1970-01-01
    相关资源
    最近更新 更多