从一个单独的fork合并一个分支时,Squashing提交

时间:2016-05-26 04:36:22

标签: git fork branch squash

如何在同时压缩提交的同时将fork中的分支合并到当前master中,而不要求fork维护者为我执行此操作?

例如,如果我的项目托管在acme/helloworld:master且fork位于coyote/helloworld:patch,并且patch分支有10个额外提交,那么如何合并coyote/helloworld:patch在一次提交中进入acme/helloworld:master而没有来自fork所有者的任何干预?

1 个答案:

答案 0 :(得分:1)

如果您只想合并一次提交,

有几种方法可以执行此操作。例如,您可以使用名为 git rebase -i

的功能执行此操作

使用rebase将打开一个交互式shell,它将帮助您将多个提交合并到一个提交中,并将fork分支的头部移动到master分支中的最新提交。例如,在您的情况下,您可以使用以下命令。

git checkout coyote / helloworld:patch;

这将打开一个文本编辑器,列出所有即将移动的提交

内容如下所示,

为提交#1选择33d5b7a消息

选择提交#2的9480b3d消息

选择提交#3的5c67e61消息

此列表准确定义了执行rebase后分支的外观。通过更改pick命令和/或重新排序条目,您可以使分支的历史记录看起来像您想要的任何内容。例如,如果第二次提交修复了第一次提交中的一个小问题,您可以使用如下所示的fixup命令将它们压缩为单个提交,

为提交#1选择33d5b7a消息

fixup 9480b3d提交#2的消息

选择提交#3的5c67e61消息

当您保存并关闭文件时,Git将根据您的指示执行rebase。

因此,它将在单个提交中重新绑定并组合提交。