git - Git rebase squash 通过哈希提交
问题描述
我有一个大约有 10 个提交的分支。其中 3 个是合并提交,将 master 合并到我的分支并在每次之间添加约 500 个提交。有没有办法将在当前分支上进行的提交压缩为一个?我的历史看起来像这样:
ad54ef86 My Commit 1
ad54ef86 Merge commit
ad54ef86 Others' Commits
....500 more others' commits
ad54ef86 My Commit 2
ad54ef86 My Commit 3
ad54ef86 Merge commit
ad54ef86 Others' Commits
....500 more others' commits
ad54ef86 My Commit 4
...
现在做git rebase -i HEAD~2000
和搜索是很多工作。有办法解决吗?
编辑:所以这个问题被标记为 Squashing last n commits together 的副本。这显然不是我的问题。在我合并该分支中的另一个分支并同时获取所有这些提交之后,我想压缩仅在当前分支上进行的最后 n 次提交。
解决方案
首先,我会问你rebase的目的是什么?你想最终将你的提交推送到远程吗?或者,您是否只想将您的提交放在首位并继续在本地工作?无论哪种方式,我建议您采取以下步骤:
- 从您的远程主分支开始创建一个新分支。这将使您获得来自远程主机的所有提交。
- 切换到新分支。
- 开始从您描述的旧分支中挑选您的提交。了解提交的哈希值会有所帮助。这将在您的提交下从 master 获得所有提交。请注意,您在新分支中提交的哈希值将被重写。
- 如果需要,您现在可以压缩并将您的提交推送到远程。
记住下次需要同步到远程时执行 fetch 和 rebase。
推荐阅读
- ios - 在发布或调试模式下控制框架 api 的编译
- javascript - 如何从无状态组件外部但在同一个文件中的函数访问类对象?
- r - 用于在 R 中循环具有不同后缀的常用变量名的函数
- sql - 日志状态值的 SQL 查询
- html - Div 仅水平打印
- c# - X的值在增加时重置
- python-3.x - 如何在 wsl2 上从 python3 运行 Selenium ChromeDriver?
- android - 资源 ID 在 Android Gradle 插件 5.0 版中将是非最终的,请避免在 switch case 语句中使用它们
- c++ - 新标准版本的 C++ 中是否有过无声的行为变化?
- javascript - Moment JS:倒计时没有计算正确的差异并让它倒计时