首页 > 解决方案 > GIT 使用具有不同历史记录的分支创建拉取请求

问题描述

我有主分支。一段时间以来,它已经有一些提交。然后我从它创建了开发分支。一段时间后,我想将它合并回master,但将其压缩,使其只有一个提交(目前有很多。

在开发之外,我创建了一个分支,例如develop-fix-branch。

然后我删除了开发。然后我用这些命令创建了空的开发:

git checkout --orphan develop
git rm -rf .
git commit --allow-empty -m "root commit"
git push origin develop

这创建了一个名为develop的空分支。都好。

现在我计划从develop-fix-branch创建一个PR->开发并压缩所有提交,希望我只有一个提交进行开发,我收到以下消息:

没有什么可以比较的。develop 和 develop-fix-branch 是完全不同的提交历史。

我该怎么做才能只用一次提交再次开发,然后再将它合并回master,也有一次提交?

标签: gitgithub

解决方案


这听起来像是实现其他目标的一种有点复杂的方式。这听起来并不完全正确,基本上有两种常用的方法来压缩你的历史。您可以执行交互rebase并使用squashor fixup(前者将提示您编辑结果压缩提交的提交消息)。

让我们假设您的更改是基于当前的master(例如,您已经重新设置基准;如果没有,您可以使用例如git merge-base --fork-point master来了解ref您应该将交互式重新设置为什么):

git rebease -i master

另一种选择(我个人出于多种原因更喜欢上面的那个)是将reset您的分支 reflog(软重置)到ref您想要进行单个提交的分支(例如master,来自上面的示例)。

git reset master
git add .  # or -u or whatever makes sure correct changes are staged
git commit

你可以push


推荐阅读