首页 > 解决方案 > 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 次提交。

标签: gitrebasesquash

解决方案


首先,我会问你rebase的目的是什么?你想最终将你的提交推送到远程吗?或者,您是否只想将您的提交放在首位并继续在本地工作?无论哪种方式,我建议您采取以下步骤:

  1. 从您的远程主分支开始创建一个新分支。这将使您获得来自远程主机的所有提交。
  2. 切换到新分支。
  3. 开始从您描述的旧分支中挑选您的提交。了解提交的哈希值会有所帮助。这将在您的提交下从 master 获得所有提交。请注意,您在新分支中提交的哈希值将被重写。
  4. 如果需要,您现在可以压缩并将您的提交推送到远程。

记住下次需要同步到远程时执行 fetch 和 rebase。


推荐阅读