【发布时间】:2020-05-03 09:57:13
【问题描述】:
Rational:In out 环境审查发生在此处表示为 master> 的分支上。我想将(更好:组合)提交压缩在一起,以便对某个开发步骤进行所有更改。因此:
我如何从左到右?
master> * C <feature
|\
* H <feature - just local | * H (merged)
| | |
* G - pushed to remote =??=> | * G (merged)
master> B * | - pushed to remote B * |
| * F - pushed to remote | * F (merged)
|/ |/
* A *
实际上,功能路径上的提交数量很大(10+),我想将它们全部压缩。其中一部分已发布到远程存储库(不应更改或更改)。但是我只想在主分支上创建一个提交。
git merge --squash 显然会执行此操作,但它不会将提交标记为合并。因此,如果我继续在<feature-Branch 上工作,下一次调用git merge 将导致很多冲突。我发现 explanation on stackoverflow: git merge --squash 导致了一个与源提交无关的补丁。
所以,我想要实现的是从右到左的情况,并且 featurebranch 上的所有提交(F、G 和H)将被标记为合并*) - 如果我继续工作在 Featurebranch 上下一次合并不会导致与我自己的更改发生冲突。如果 Featurebranch 上的所有更改都未发布到远程存储库(请参阅git merge --squash-Question),则此问题已解决。
PS:当然,将提交单独标记为合并就足够了,但我不知道如何做到这一点,也不知道 git 如何管理它的合并信息。
PSS:正常合并可以,但如果 master 上没有提交,它会失败。
*):“标记为合并”的意思是,在 gitk - 如果您选择提交,分支列表包括功能、遥控器/原点/功能、主控、遥控器/原点/主控。因此,在随后对git merge 的调用中不会考虑这些提交。
【问题讨论】:
-
合并后只删除功能分支?除此之外,不清楚您的预期结果是什么?
-
谢谢@Liam,但我应该继续在这个分支上工作。 (设置工作环境的方式使得为单个项目创建新分支的成本很高 - CICD 与我正在处理的命名分支相关联,因为与一堆其他可执行文件协作)