在为使用 git 进行 Web 开发的工作流程进行了挣扎和整理之后,我的任务是在最后一秒添加一个登台服务器。我们在本地开发/测试并推送到一个 repo,现在需要一个沙箱,这样其他部门的人就可以在不破坏东西的情况下尝试新事物。
远程 repo 需要两个长期运行的分支(本着 nvie 的分支模型的精神),master 和 development。
我们需要能够推送到一个repo,并将develop分支签出到test.site.com docroot,准备好后,将develop合并到master,将master签出到site.com docroot
所以在服务器...
git init
git add .
git commit -m "Initial commit"
git checkout -b "develop"
在我们的本地机器上...
git clone user@site.com:/repos/repo1.git
???
git push origin/develop (??? Updates test.site.com docroot)
并返回服务器使代码生效
git checkout "master"
git merge develop (??? Updates site.com docroot)
git checkout -b "develop"
并且在本地
git pull
帮助问号或其他建议表示赞赏。
编辑: 到目前为止,我正在尝试一些答案。在此期间提出了一个完全老套的想法,并认为我会分享:
一个接收后的钩子来统治他们。
我们克隆一个裸仓库并跟踪开发。将开发推到起源/开发。
接收后 - 将 GIT_WORK_TREE 设置为 test.site.com,结帐 -f 开发
如果提交消息包含“merge_master”,则将 GIT_WORK_TREE 设置为 site.com docroot,
git checkout master
git merge develop
git checkout -f master (this would be for hotfixes)
将master合并回本地开发并拉取
尘埃落定后,使用 difflog 发送电子邮件,拧紧双手,喝一口浓烈的东西。
有多少种不同的方式可以打破?