Git在使用交互式重基压缩时跳过合并提交

Git在使用交互式重基压缩时跳过合并提交,git,version-control,Git,Version Control,我正在使用git开发一个特性,到目前为止,我已经完成了以下步骤 基于master签出名为feature1的新功能分支 添加两个提交 根据功能1检查新分支测试 在测试中执行一些更改 返回(签出到)feature1分支 将test分支合并到feature1 删除test分支 编辑文件,并修改上次提交以反映更改 下面是git日志--oneline-n5output de5d701 Merge branch 'test' into 'feature1' (amended) a668f93 'feat

我正在使用git开发一个特性,到目前为止,我已经完成了以下步骤

  • 基于
    master
    签出名为
    feature1
    的新功能分支
  • 添加两个提交
  • 根据
    功能1检查新分支
    测试
  • 测试中执行一些更改
    
  • 返回(签出到)
    feature1
    分支
  • test
    分支合并到
    feature1
  • 删除
    test
    分支
  • 编辑文件,并修改上次提交以反映更改
下面是
git日志--oneline-n5
output

de5d701 Merge branch 'test' into 'feature1' (amended)
a668f93 'feature1' commit3
ded7c00 'feature1' commit2
8731807 Initial 'feature1' commit
ff2f539 latest 'master' commit
在合并到
master
之前,我想挤压
ff2f539最新“master”提交之后的所有内容。我试着表演

git rebase --interactive  ff2f539
但编辑器中未列出最新提交:

pick 8731807 Initial 'feature1' commit
pick ded7c00 'feature1' commit2
pick a668f93 'feature1' commit3

# Rebase ff2f539..de5d701 onto ff2f539
#
# Commands:
...
# Note that empty commits are commented out
我不明白为什么将
test
分支合并到
feature1
分支后生成的最新提交被跳过。 使用以下内容保存和退出编辑器:

pick 8731807 Initial 'feature1' commit
squash ded7c00 'feature1' commit2
squash a668f93 'feature1' commit3

# Rebase ff2f539..de5d701 onto ff2f539
#
# Commands:
...
# Note that empty commits are commented out
生成新的提交,该提交不提供上次提交的更改

de5d701 Merge branch 'test' into feature1(amended)

他们迷路了。在合并到master之前,如何将所有这些提交压缩成一个提交,有什么帮助吗?

如果要在rebase中包含合并提交,请将
--preserve merges
选项传递到
git rebase

Git不会按设计在“交互”列表中显示合并提交。相反,它包含由该合并带入分支的所有提交。您可以使用
-p
--preserve merges
)选项更改该行为,但不建议在交互模式下使用该选项,因为结果可能不太明显(请参阅)

但有一个简单的解决方案,不需要重新定基:

# make sure your working copy is clean, do git stash if needed
git checkout feature1
git reset --soft ff2f539
git commit -m "..."

这将生成一个提交,包括ff2f539之后的所有更改。

您确定ded7c00来自feature1分支而不是测试分支吗?