我们使用 git 来管理我们的代码,并使用 CI 系统来构建、复制并将构建工件重新推送回 git。我们推送到主分支,CI 系统拉下更改、构建并推送到名为生产的分支。然后对该分支进行测试,并运行另一个 CI 任务以将生产分支下拉到我们的实时服务器上。
没有人会就地编辑实时服务器上的版本 - 该存储库的本地副本永远不会更改,它是使用 -b 生产修饰符克隆的。
但是,有时,当我们下拉到实时服务器时,会出现冲突。我确信我对 git 的理解存在一些问题,但是,如果服务器上没有任何变化,并且仅从该分支中提取,那么冲突怎么会出现?
我们的流程本质上是:
本地:
git push origin master
CI:
git checkout <newest-changeset>
CI:
test
git checkout -b local # to put the detatched-head CHECKOUT from above into a usable branch
git push origin local:production
服务器:
git pull origin production
--CONFLICT--