1

我们有这个分支结构:

  • master(在生产环境中构建/部署)
  • qa(在问答环境中构建/部署)
  • 特色分支

所以我们从 master 创建一个 feature 分支,然后当我们需要使用 Q&A 验证该功能时,将其合并到 qa(从 master 创建)。

有时我们需要从 master 重建 qa,因为某些开发直接合并到 master(小或错误修复)。

我做了什么:

git checkout qa
git reset --hard master
git push --force origin qa

所以遥控器现在正是我想要的。

但是现在,当其他开发人员这样做时git fetch,他们在本地qa的所有不在 master 上的提交都显示为传出提交。这似乎合乎逻辑。我们必须在每个人的机器上做一个git reset --hard origin/qa,但这有点危险。

还有其他解决方案吗?

编辑:我们为什么要这样做:qa 分支上的某些功能被放弃了,所以我们需要从 master 重新创建 qa 分支,然后合并所有其他分支。

4

2 回答 2

0

在您完成git push --force对所有客户端的强制拉动后,这是唯一的选择。为了降低危险,首先创建一个临时分支来保留qa客户端上的分支,强制拉取,然后从保留的分支中挑选提交qa并删除临时分支。

于 2017-07-19T12:01:54.850 回答
0

您正在使用(可能不知道)来自 Adam Dymitruk 的“按功能分支”工作流程,这确实是一个很棒的工作流程。

请注意,Dymitruk 建议每次更改任何内容qa时都从头开始(即 from )重新创建,而不仅仅是在您想要“取消合并”功能时。master

这意味着:只需删除qa分支并完全重建它;注意以完全相同的顺序合并所有已经存在的功能分支。您显然还想激活git rerere缓存并确保所有开发人员在彼此之间同步该缓存(git当然使用)。

因此,任何地方都不会出现奇怪的合并或重置,qa每次都是干净、新鲜的。整个操作最好在一些脚本的帮助下完成,或者由您的 CI/CD 代理自动完成。

有关完整说明,请参见 Dymitruk 的网站。

于 2017-07-19T16:40:37.957 回答