如果Git存储库结构如下所示:
master: A-C
dev: \B-D-E
是否可以将开发分支合并到master中,以便只向master添加一个提交,其中包含在开发分支中的所有提交中找到的所有更改。所以上面的结构会合并成这样:
master: A-C-E'
E'
提交将包含开发分支中的所有更改,并且只包含最新的提交消息,在一次整洁提交中将新功能添加到master中。
Git中有可能吗?我希望能够保持GitHub存储库的历史整洁,因为我的开发分支通常包含未完成,未完成且不适合人类消费的早期提交。
答案 0 :(得分:4)
合并部分应该很简单(参见" How to use git-merge --squash
?"):
git checkout master
git merge --squash dev
您可能需要调整提交消息:
git commit --amend -m "<commit message from E>"
答案 1 :(得分:1)
你可以做到这一点,虽然它不会合并。 (请记住:合并提交有2个或更多父母。E'
只有一个父母:C
。)
git rebase -i master dev
pick
改为squash
除了。{
第一行,然后保存文件并关闭编辑器。E'
所需的提交消息,然后保存文件并关闭编辑器。然后
git checkout master
git merge dev --ff-only
git branch -d dev