如何实现压缩合并提交

How to achieve a squashed merge commit

假设我目前已签出我的 master 分支

如果我使用 (--no-ff) 进行正常合并,例如

git merge release/version --no-ff

然后所有未完成的提交都会应用到我的 master 分支,并进行额外的合并提交。通过合并提交,您可以直观地看到发布分支进入主分支。但是,假设我只希望 master 包含项目历史的删节版本,所以我像这样压缩所有未完成的提交:

git merge release/version --squash

然后我用

提交压缩的提交
git commit -m "Merge branch 'release/version'"

所以现在我有一个很好的简单压缩提交但我不再有合并提交并且我的主分支看起来脱节,就好像发布分支从未真正合并过一样。我怎样才能两全其美并压缩我的提交,但仍然让它看起来像一个合并。

或者可能有一种完全不同的方法来更新带有删节历史的 master。

Any pointers on how to merge into master but with a simple commit. (I have a develop branch with the full history)

您可以从 release/version 分支开始的地方创建一个新分支,但将每个 release/version 提交压缩为一个。

然后 merge --no-ff 那个(一次提交)分支。

git branch newBranch release/version
git rebase -i $(git merge-base HEAD newBranch)
# mark all commits except the first as "`squash`"
git merge --no-ff master