我正在使用git处理一项功能,到目前为止我已经完成了以下步骤。
feature1
master
test
结帐新分支feature1
。test
中执行一些更改。 feature1
分行。 test
分支合并到feature1
test
分支这是git log --oneline -n 5
输出
de5d701 Merge branch 'test' into 'feature1' (amended)
a668f93 'feature1' commit3
ded7c00 'feature1' commit2
8731807 Initial 'feature1' commit
ff2f539 latest 'master' commit
我希望在合并到ff2f539 latest 'master' commit
之前压缩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之前将所有这些提交压缩成一个提交?
答案 0 :(得分:1)
Git没有按设计在“交互式”列表中显示合并提交。它包含了由该合并引入分支的所有提交。您可以使用-p
(--preserve-merges
)选项来更改该行为,但不建议在交互模式下使用,因为结果可能不那么明显(请参阅http://git-scm.com/docs/git-rebase#_bugs)。
但是有一个没有变基的简单解决方案:
# make sure your working copy is clean, do git stash if needed
git checkout feature1
git reset --soft ff2f539
git commit -m "..."
这将生成一个提交,包括ff2f539之后的所有更改。
答案 1 :(得分:0)
如果要在rebase中包含合并提交,请将--preserve-merges
选项传递给git rebase
。