使用哈希值在Git中合并提交并压缩历史记录

4

我有一个分支,大约有10个提交。其中3个是合并提交,将主分支合并到我的分支,并每次在之间添加了大约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 并查找是很麻烦的。有没有什么方法可以绕过它?
编辑:所以这个问题被标记为合并最后 n 次提交成一个的重复问题。显然这不是我的问题。我想要将在我合并另一个分支到此分支之后,仅压缩当前分支上最近 n 次提交,并且所有这些提交也会包含在其中。

可能是 https://dev59.com/Vm435IYBdhLWcg3w1juV 的重复问题。 - andreee
1
你为什么想要压缩? - coredump
可能是Squash my last X commits together using Git的重复问题。 - phd
@coredump 请查看下面答案的评论。 - ayushgp
@ayushgp 谢谢,我现在可以评论问题了 :) - rdf
1个回答

7
首先,我想问一下您的rebase目的是什么?您是想将提交推送到远程吗?还是只想让您的提交置于顶部并继续在本地工作?无论哪种方式,我建议您采取以下步骤:
  1. 从远程主分支创建一个新分支。这将获取您在远程主分支上的所有提交。
  2. 切换到新分支。
  3. 开始挑选您从旧分支描述的提交。了解您提交的哈希值会有所帮助。这将获取您提交下的所有主分支提交。请注意,新分支中您提交的哈希值将被重写。
  4. 如果需要,现在可以压缩和推送您的提交到远程。
记得在下次需要与远程同步时进行fetch和rebase。

我有多个提交,称为“将主分支与当前分支合并”和“修复此错误或删除未使用的代码”。我只想通过将这些分支上的10-15个提交压缩成1-2个来获得干净的历史记录。我认为创建一个新分支并挑选可能是正确的方法。 - ayushgp
请将以下与编程有关的内容从英语翻译成中文。只返回翻译的文本:请记得验证我的答案,这样我就能获得50个声望点 :) 我需要那些才能在问题上发表评论。 - rdf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接