跳至内容
GitTree
历史和恢复

使用交互式变基编辑历史记录

交互式变基会重写所选提交之上的提交:保留、改写、编辑、压缩、修复或删除每个提交,然后将它们拖到新的顺序中,例如 git rebase -i。对于单个更改,提交菜单中的 Edit History 可以一步完成。

免费已更新

免费使用 GitTree:登录后的所有本地 Git 功能。

在此页面上
  1. 开始之前
  2. 在哪里可以找到它
  3. 步骤
  4. 预期结果
  5. 每个动作的作用
  6. 如果出现问题
  7. 问题
  8. 有关的

开始之前

  • 要重写的提交位于当前分支上,其中没有合并提交。
  • 优先选择尚未推送的提交:重写的提交会获取新的 ID。

在哪里可以找到它

  • 右键单击要更改的提交正下方的提交:Edit History › Interactive Rebase of the Commits Above…。
  • 在同一 Edit History 菜单中进行一步编辑:Edit Commit Message…、Drop Commit…、Move Commit Up 和 Move Commit Down。
  • 选择多个提交,然后右键单击:Squash Commits…。
行动macOSWindows 和 Linux
Undo 整个变基⌘ZCtrl+Z

步骤

  1. 打开编辑器

    右键单击要更改的提交下方的提交,然后选择 Edit History › Interactive Rebase of the Commits Above…。最旧的提交位于顶部,按照重播的顺序排列。

    动画:交互式变基编辑器打开,一次提交设置为 Squash,另一次提交设置为 Reword
    每一步都有一个动作;这里,一个提交被压缩到上面的提交中,另一个提交被重新措辞。GitTree 与演示存储库的接口。
  2. 为每个提交选择一个操作

    在每个步骤上设置 Action:Pick 保留它,Reword 更改其消息,Edit 停在那里以便您可以修改它,Squash 并 Fixup 将其折叠到上面的提交中,Drop 将其保留。

  3. 如果需要重新订购

    拖动步骤的手柄,或将其聚焦并按 Alt+↑ 或 Alt+↓。字母也起作用:p、r、e、s、f 和 d 设置操作。

  4. 开始变基

    按 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。