步骤
我将feature
分支合并回master
并删除了feature
分支。但是它仍然显示在树中。
结果
在删除功能分支之前,SourceTree中的树可视化: Tree before deleting the feature branch:
在删除功能分支后,SourceTree中的树可视化:Tree after deleting the feature branch:
左侧列表中的feature
分支已消失,如预期的那样,树可视化中的标签也已消失,同样符合预期。
问题
但是:
- 为什么紫色部分仍然显示?
- 我需要执行哪些Git命令才能不再看到紫色部分?两个小节后面我可能已经回答了这个问题。
我理解上图中的最终提交有两个父提交。
但我不明白为什么发生在特性分支上的紫色提交不在master
上的最终合并提交中(我想,这意味着删除它后紫色分支不应再可见)。
通过命令行重放步骤(而不是SourceTree)
我在命令行上重放了它(只是为了检查SourceTree是否如我所想)。最后一步是git merge feature
。情况相同:
使用--squash
选项的尝试
我撤销了最后一次合并,并尝试了这个:
git merge --squash feature
git commit "Squashed merge"
git delete -D feature # Note that -d did not work; it said "error: The branch 'feature' is not fully merged."
现在它显示了我最初期望的内容。一条直线,没有任何特性
分支的迹象:
问题
- 这个合并与之前的合并有何不同?
我猜我在上面的所有尝试和错误之后已经概括了这些合并的发生过程,但如果有人能详细解释上述步骤的语义差异,我将不胜感激。
git merge --squash
会"不标记任何合并关系",这是我不理解的部分。谢谢! - Lernkurvemaster
的顶部。但出于学习目的,我也对只有一个提交等效于所有提交的例子感兴趣。 - Lernkurve