【发布时间】:2015-04-24 12:32:57
【问题描述】:
场景:
master
|
\
dev
|
\
feature1
|
|
|
/
|
/
tagV1
|
\
feature2
|
|
/
|
/
tagV2
|
\
fixForV1
|
|
/
|
/
tagV1_1
说明:
- 创建仓库
- 创建并签出分支 dev
- 创建并签出分支功能 1 .. 实现功能
- 签出开发并合并功能1,删除功能1
- 结帐主合并开发
- 创建tagV1(将交付给客户)
- 结帐开发人员
- 创建并签出分支功能 2 .. 实现功能
- 签出开发并合并功能2,删除功能2
- 结帐主合并开发
- 创建tagV2(将交付相同或不同的客户)
- 结帐开发人员
- 创建并签出分支 fixForV1 .. 实施修复
- 结帐开发并合并 fixForV1
- ???
15… 我们需要合并 tagV1 和 fixForV1 上的提交(不包括 feature2 上的提交)。合并后,我们将创建一个新标签 tagV1_1 并将其交付给客户。
我知道我可以通过挑选 {hash of first commit made on fixForV1} ^..{hash of last commit on fixForV1} 来实现这一点 有一个更好的方法吗?
【问题讨论】:
-
请问为什么fixFovV1是基于V2的? (你的图表也需要更多的爱,看起来没有什么东西被合并回master)
-
它基于 V2 因为:这是一个简单的演示来展示我的问题。在现实世界中,fixForV1 将是一个在 dev 中实现的功能......现在一段时间后,客户 wo 安装了 v1 要求我也将这个功能集成到 v1 中......并且由于在 feature2 中所做的更改可能会破坏 v1 中的一些东西,所以我只想合并在 fixForV1 中所做的提交(顺便说一句。master 上的所有内容都没有前导空格,dev 有 2 个,功能分支有 4 个……是的,它可能更漂亮。)
标签: git merge tags git-branch git-cherry-pick