Git只合并开发分支的最终结果

时间:2015-05-24 10:42:48

标签: git github git-merge git-history-graph

如果Git存储库结构如下所示:

master: A-C
dev:     \B-D-E

是否可以将开发分支合并到master中,以便只向master添加一个提交,其中包含在开发分支中的所有提交中找到的所有更改。所以上面的结构会合并成这样:

master: A-C-E'

E'提交将包含开发分支中的所有更改,并且只包含最新的提交消息,在一次整洁提交中将新功能添加到master中。

Git中有可能吗?我希望能够保持GitHub存储库的历史整洁,因为我的开发分支通常包含未完成,未完成且不适合人类消费的早期提交。

2 个答案:

答案 0 :(得分:4)

合并部分应该很简单(参见" How to use git-merge --squash?"):

git checkout master
git merge --squash dev

您可能需要调整提交消息:

git commit --amend -m "<commit message from E>"

(你有other options when doing the merge

答案 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