0

我们使用 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--
4

1 回答 1

0

看起来您的流程缺少围绕您的变更集的一些结构。我不会使用任意提交来标记变更集。看看我的每个功能分支的帖子来组织你的 CI 工作http://dymitruk.com/blog/2012/02/05/branch-per-feature/

通过这种方式,您可以轻松地将候选发布构建(可以在您需要时提升到生产环境)和集成构建(这是您经常想要的)用于让 CI 在您开发时运行健全性测试。

于 2012-07-10T17:31:00.957 回答