git - 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,也有一次提交?
解决方案
这听起来像是实现其他目标的一种有点复杂的方式。这听起来并不完全正确,基本上有两种常用的方法来压缩你的历史。您可以执行交互rebase
并使用squash
or 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
。
推荐阅读
- java - 将 JAR 放入 JVM 库与项目库有什么区别?
- android - 如何使用 ffpeg 在视频上正确添加适合 XY 的水印图像
- python - 如何读取和操作字典和文件 python 2.7
- excel - Excel Range.Find 没有按照我想象的方式工作
- pdf - 使用 Itext 填充 PDF 字段
- laravel - Laravel 配置:清除导致崩溃
- webstorm - WebStorm,无法抑制对未定义函数的检查
- java - 在 IntellIJ 中找不到 javafx 的依赖项
- python - 烧瓶不工作 Windows 7
- imgur - Imgur API 商业与免费