5

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

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

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

master: A-C-E'

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

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

4

2 回答 2

4

合并部分应该很容易(参见“如何使用git-merge --squash ”):

git checkout master
git merge --squash dev

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

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

进行合并时您还有其他选择

于 2015-05-24T10:57:06.410 回答
1

你可以做到这一点,虽然它不会是一个合并。(请记住:合并提交有 2 个或更多父级。E'但只有一个父级:C。)

git rebase -i master dev
  • 将打开一个文本编辑器。将除第一行之外的所有内容更改pick为,然后保存文件并关闭编辑器。squash
  • 将打开一个文本编辑器。(填充不同的内容。)将其内容编辑为您想要的提交消息E',然后保存文件并关闭编辑器。

然后

git checkout master
git merge dev --ff-only
git branch -d dev
于 2015-05-24T11:19:08.760 回答