将一个分支中的提交(含合并)压缩至另一个分支

4
我正在处理一个特定的git项目仓库。它有三个分支:
  1. master
  2. development
  3. release
结构如下:从master衍生出development,在此分支上开发和测试功能。一旦一组功能被开发完成,development将被合并(无快进)到master中,该合并提交代表发布版本或中间版本。不会直接提交到master,它只包含来自development的合并提交。
当一个版本被认为是发布版本时,需要将其转移到release。这样做的想法是,release具有线性历史记录,其中每个提交代表一个发布版本。在release中不应有任何中间提交的痕迹。

以这个例子为例:release/01.03.00.00代表着与master/01.03.00.00相同的仓库状态。现在我想在release中创建一个单一的提交,该提交代表master/01.04.00.00master/01.03.00.00之间的差异。是否可以不使用git patch来完成?使用git cherry-pick与一系列提交(请注意,在版本之间有时会有几个合并提交)似乎行不通(它需要-m来处理合并提交,但随后会抱怨没有合并提交)。

enter image description here

1个回答

1
我没有一个仓库来测试这个,但是,你是否尝试从主分支创建一个分支,在该新分支上压缩所有提交,然后将其合并到发布版本中?类似于以下操作:
$ 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接