如何创建一个依赖于一个超级分支的子分支,现在依赖于另一个超级分支?

How to make a sub-branch that's dependent on one super branch, now dependent on another super branch?

例如,假设我有这些 Git 个分支:

 - master
   - development
     - feature
   - staging
   - production

开发、暂存和生产之间没有任何功能差异,除了配置,例如基础 API URL、客户端密钥等。

只要在开发中推动了更改,它最终会合并到暂存中,最终也会合并到生产中。但是在合并之间保留了配置差异。

现在的问题,我们突然有一段时间不能使用开发服务器了。所以我们必须努力进行分期。但问题是我们的工作是在特性分支中,而特性分支是从开发分支中分支出来的。

为了让代码能够被测试,那么我们必须将变更push到feature分支,pull request到develop分支,合并变更到staging分支,并在那里进行测试。但我们不希望 commit/push/pull/merge 尚未在 dev/feature 中测试的内容进入暂存状态。但如果它没有合并到暂存中,那么我们就无法测试。我们也不想手动更改应用程序的“配置”,如 base URL 等,因为这种更改只是暂时的,直到开发服务器再次工作。 “配置”也分散在几个文件中,不是复制粘贴那么简单

暂时如何让功能分支使用暂存分支的“配置”?所以我在想也许可以将登台和开发分支之间的“差异”应用到功能分支上?然后当我们可以再次在开发服务器上工作时,我们可以重新应用“反向差异”?我什至不确定这是否可行,或者是否有更好的方法,因为我不太精通 git.

这个想法是,“暂时做一些不寻常的事情”可以很容易地通过 Git 通过“创建另一个分支并在那里玩”来解决。例如:

您在 feature 之上构建另一个分支并将 staging 合并到其中:

git checkout -b tmp-feature-for-staging feature
git merge staging

这可能会围绕 developmentstaging 之间不同的配置值产生合并冲突。解决它们以支持 staging 版本并提交结果。

然后将 tmp-feature-for-staging 部署到暂存服务器。当结果看起来不错时,你扔掉 tmp-feature-for-staging。如果您发现问题,并且必须修改 feature,请这样做,然后在更新的 feature 分支上重复此过程。