我们有以下分支结构
- 功能分支-每个用户故事一个
- 环境分支(QA, UAT和master)
部署过程一旦用户故事完成,我们将功能分支合并到QA分支中,在那里完成测试。我们一直这样做,直到我们有足够的故事被提升到UAT分支。我们只将客户/QA团队批准的故事合并到UAT分支。主分支也一样。
每次部署后,我们从master重新构建所有的特性分支(正在开发中)。当我们试图将更新的特性分支合并到QA分支时,我们看到pull request中有很多文件。在QA中已经存在的文件(在QA部署阶段合并)显示为新文件,而更新的文件也显示相同的更改。
这里的原因是什么?我如何确保git在创建拉取请求时正确计算文件。
对于每个功能分支,您需要使用两个参数执行rebase --onto qa
(PR的目标分支):
- 该特性分支的第一次提交的父级
- 特性分支名称"F">
:
git rebase --onto qa FirstCommit~1 F
如果你知道从哪个分支"B
";F
支路启动,使用git merge-base
:
git rebase --onto qa $(git merge-base B F)~1 F
如果没有,执行git log F
来直观地检查哪个提交是F
特性分支的第一个提交。
对一个特性分支git push --force
进行尝试,该分支曾经基于目标分支的顶部,并检查正在进行的PR(有太多的提交)现在只显示来自F
的提交。