我正在使用具有特定git项目存储库的项目。有三个分支:
master
development
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.00
和master/01.03.00.00
之间的区别。 是否可以不使用git patch
来完成操作吗?可以将git cherry-pick
与一系列提交一起使用(请注意,有时master
之间在发布之间可能会有多个合并提交版本)似乎无效(需要-m
才能处理合并提交,但随后会抱怨未合并提交)。
答案 0 :(得分:1)
我没有一个仓库可以测试这一点,但是,您是否尝试过从master创建一个分支,压缩该新分支的所有提交,然后然后将其合并到发行版中?
类似的东西:
$ 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