使用交互式变基编辑历史记录
交互式变基会重写所选提交之上的提交:保留、改写、编辑、压缩、修复或删除每个提交,然后将它们拖到新的顺序中,例如 git rebase -i。对于单个更改,提交菜单中的 Edit History 可以一步完成。
免费已更新
免费使用 GitTree:登录后的所有本地 Git 功能。
开始之前
- 要重写的提交位于当前分支上,其中没有合并提交。
- 优先选择尚未推送的提交:重写的提交会获取新的 ID。
在哪里可以找到它
- 右键单击要更改的提交正下方的提交:Edit History › Interactive Rebase of the Commits Above…。
- 在同一 Edit History 菜单中进行一步编辑:Edit Commit Message…、Drop Commit…、Move Commit Up 和 Move Commit Down。
- 选择多个提交,然后右键单击:Squash Commits…。
| 行动 | macOS | Windows 和 Linux |
|---|---|---|
| Undo 整个变基 | ⌘Z | Ctrl+Z |
步骤
打开编辑器
右键单击要更改的提交下方的提交,然后选择 Edit History › Interactive Rebase of the Commits Above…。最旧的提交位于顶部,按照重播的顺序排列。

每一步都有一个动作;这里,一个提交被压缩到上面的提交中,另一个提交被重新措辞。GitTree 与演示存储库的接口。 为每个提交选择一个操作
在每个步骤上设置 Action:Pick 保留它,Reword 更改其消息,Edit 停在那里以便您可以修改它,Squash 并 Fixup 将其折叠到上面的提交中,Drop 将其保留。
如果需要重新订购
拖动步骤的手柄,或将其聚焦并按 Alt+↑ 或 Alt+↓。字母也起作用:p、r、e、s、f 和 d 设置操作。
开始变基
按 Start Rebase。如果某些提交已经在远程上,请先确认重写它们。 GitTree说Rebase finished. Undo can put the branch back.
预期结果
该分支保存带有新 ID 的重写提交。旧分支保留在 refs/ogt/trash 下。
每个动作的作用
| 行动 | 结果 |
|---|---|
| Pick | 提交保持原样。 |
| Reword | 相同的更改,您在编辑器中输入的新消息。 |
| Edit | 变基在此提交后停止,以便您可以修改它,然后从横幅继续。 |
| Squash | 折叠到上面的提交中;消息被合并。 |
| Fixup | 折叠到上面的提交中;它自己的消息被丢弃。 Fixup, use its message 保留此人的消息。 |
| Drop | 离开分支。 |
如果出现问题
“这些提交包括合并,因此只能在此处显示,而不能重写。”
GitTree 中的交互式变基仅重写线性历史记录。从合并上方的提交开始。
“步骤……压缩成空:将其移至保留的提交下方。”
压缩或修复需要在其上方进行提交才能折叠。移动它,或将第一步更改为“选取”。
问题
如何将多个提交合并为一个?
在图表中选择它们并选择 Squash Commits…:Squash 对话框 首先显示结果、消息和共同作者。或者在编辑器中将第一个提交之后的每个提交设置为 Squash 或 Fixup。