git - 使用 git rebase -i 压缩单个分支上的提交,遇到合并冲突
问题描述
几周前,我被要求使用 git rebase -i 将一组 4-5 个连续提交压缩为 1 个提交。从那以后有一些提交。所以在下图中,我想将 B 到 F 的提交压缩为一个提交:
A - B - C - D - E - F - G - H - I ...
| |
- Want to squash-
我跑
git rebase -i 8007a14d
(其中 8007a14d 是 A 的哈希),找到我要压缩的提交,然后关闭文件。但关闭后,我被要求解决几个合并冲突。由于对提交 G 之后的代码不太熟悉,我决定中止。
这对我来说似乎有点奇怪。我想 git 会按照提交的顺序重播提交/差异。作为健全性检查,我尝试了 git rebase 并将所有提交保留为“选择”,但我仍然遇到合并冲突。有人可以帮我理解这一点吗?谢谢!
解决方案
假设我在分支上按时间顺序最新
git checkout F
git reset --soft A # move pointer of branch to A, do not change content, all differences will be in index
git commit -m "Squashed stuff" # now you have a single revision after A that has a tree exactly like F
git cherry-pick F..I # replay everything after the squashed revisions
现在你完成了。
推荐阅读
- spring - 如何正确处理 JwtException.?
- symfony - $request 对于生产环境为空
- amazon-web-services - 具有策略分配的 terraform aws iam 角色
- apache-kafka - Kafka 错误 - 这不是正确的协调器
- google-bigquery - Bigquery api 响应以 json f, v 格式显示。但我需要列标题
- sql - SharePoint Online,导出 SharePoint 列表
- python - 如何将多列字典转换为数据框?
- html - 侧边栏和盒子之间的大空间
- python - 将 voigt 轮廓拟合到发射线
- c# - ASP.NET Core 3.1 响应慢