首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除git历史记录中的多合并功能分支

删除git历史记录中的多合并功能分支
EN

Stack Overflow用户
提问于 2019-03-19 03:24:24
回答 1查看 327关注 0票数 2

我目前正在将SVN存储库转换为Git,在此过程中,我希望使历史记录尽可能线性。问题是,我在SVN中有一些功能分支,它们在过程中从主分支合并而来。这种合并模式使得rebaseing成为一种痛苦,我不知道如何正确地完成它。

我的目标是将功能分支的合并替换为squash commits:

我研究了这个问题的答案,但似乎没有一个建议的答案对我的情况有效:git remove merge commit from history

我应该如何开始挤压我的功能分支,以便我可以在正确的时间点重新建立它在master上的基础?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-19 03:35:39

假设M是最顶层的合并提交( GH之间的合并提交):

代码语言:javascript
运行
复制
git checkout -b cleaned-branch M
git reset --soft G
git commit -m "Get rid of merge"
git rebase M `git rev-parse master` --onto cleaned-branch
git checkout -B cleaned-branch

git reset --soft G将使git认为G是您当前的基本提交,但它不会接触您的文件(与checkout不同),因此您将以未完成更改的形式保留合并后的所有更改,并且后续提交将只有G作为其父级。然后,我们重新设置剩余提交的基址,并将cleaned-branch向上移动到结果tip提交。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55228691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档