您可以使用git rebase -i --root 重新设置从初始提交开始的所有内容。
假设您有 11 次提交,看起来像这样:
* cf0bc41 - (HEAD, master) Faun: Eleven (2 seconds ago)
* b32d8cc - Faun: Ten (2 seconds ago)
* f789e49 - Faun: Nine (2 seconds ago)
* 780435e - Faun: Eight (2 seconds ago)
* 3c6b084 - Faun: Seven (2 seconds ago)
* fecce89 - Faun: Six (2 seconds ago)
* 0433dbe - Faun: Five (2 seconds ago)
* 8002cb7 - Faun: Four (2 seconds ago)
* 3439445 - Faun: Three (2 seconds ago)
* 38181f1 - Faun: Two (2 seconds ago)
* 9373809 - Faun: One (2 seconds ago)
如果您想删除前 10 个提交,只需运行 git rebase -i --root,它将在您的编辑器中打开类似以下内容:
pick 9373809 One
pick 38181f1 Two
pick 3439445 Three
pick 8002cb7 Four
pick 0433dbe Five
pick fecce89 Six
pick 3c6b084 Seven
pick 780435e Eight
pick f789e49 Nine
pick b32d8cc Ten
pick cf0bc41 Eleven
# Rebase cf0bc41 onto 0bd34c4
您可以简单地删除要删除的提交的行。但是,这可能会导致冲突,因为稍后提交的文件很可能是您在之前的提交中引入的修改文件。
另外请注意,运行此命令将重写 所有 次提交的 SHA,这也可能会给您带来问题。
压缩或修复这些初始提交可能会更好。不理会第一个并将单词pick 更改为squash 或fixup。有关详细信息,请参阅交互式 rebase 底部的 cmets。
例如,如果您编辑交互式变基,如下所示:
pick 9373809 One
fixup 38181f1 Two
fixup 3439445 Three
fixup 8002cb7 Four
fixup 0433dbe Five
fixup fecce89 Six
fixup 3c6b084 Seven
fixup 780435e Eight
fixup f789e49 Nine
fixup b32d8cc Ten
pick cf0bc41 Eleven
你最终会得到这个 git 历史记录:
* f8980bc - (HEAD, master) Faun: Eleven (0 seconds ago)
* 3d300e9 - Faun: One (0 seconds ago)