git – Squash从一个分支到另一个分支提交(合并)

我正在开发一个带有特定git项目存储库的项目.有三个分支:

>主人
>发展
>发布

结构如下:从主生成开发,开发和测试功能.一旦开发了一组功能,开发就会合并(没有快进)到master,并且合并提交代表发布版本或中间版本.没有任何东西直接提交给master,它只包含来自开发的merge提交.

当版本被视为发布版本时,需要以某种方式移动版本才能发布.这个想法是发布有一个线性历史记录,其中每个提交代表一个发布版本.在发布中不应该有任何中间提交的痕迹.

举个例子:release / 01.03.00.00表示与master / 01.03.00.00相同的存储库状态.我现在想在release中创建一个提交,它表示master / 01.04.00.00和master / 01.03.00.00之间的区别.可以不使用git补丁完成吗?使用带有一系列提交的git cherry-pick(考虑到有时可能在发布版本之间的master中有几个合并提交)似乎不起作用(它需要-m以便处理合并提交但是会抱怨不合并提交).

《git – Squash从一个分支到另一个分支提交(合并)》

最佳答案 我没有一个repo来测试这个,但是,你试过从master创建一个分支,压缩那个新分支的所有提交,然后将它合并到release中吗?

就像是:

$git checkout master
$git branch -b tmp-master
$git rebase -i HASH # the hash of the first commit from master you want to bring into release
# pick the last commit, squash all other commits
$git checkout release
$git cherry-pick HASH # put the hash of the commit you just made in tmp-master
点赞