除非绝对必要,否则请避免修改具有多个贡献者的远程分支的历史记录,例如,如果您不小心推送了一些敏感数据。

将重写分支历史的修改推送到远程存储库将被拒绝以防止数据丢失,因此您将不得不强制推送您的更改。

您不能修改不允许的受保护分支的历史记录(在 IDE 设置的版本控制 | Git页面中配置受保护分支。请注意,如果分支在 GitHub 上标记为受保护,IntelliJ IDEA 会自动将其标记为受保护一探究竟。push –force Ctrl+Alt+S

此外,对于当前签出的分支中未包含的提交,您无法执行修改分支历史记录的操作。

  1. 在打开的对话框中,输入新的提交消息并单击OK。
修改之前的提交

有时您可能提交得太早而忘记添加一些文件,或者在最后一次提交中注意到您想要修复而不创建单独提交的错误。

您可以通过使用将分阶段更改附加到先前提交的修改提交选项来执行此操作。结果,您最终得到一个提交而不是两个不同的提交。

  1. 在“提交工具”窗口Alt+0中,选择包含要添加到上一次提交的更改的已修改文件。
  2. 选择Amend复选框,使Commit按钮变为Amend Commit并单击它。
修改任何较早的提交

如果您需要将更改添加到任何较早的提交而不是单独提交,您可以使用fixup或操作来执行此squash操作。两个命令都将阶段性更改附加到选定的提交,但处理提交消息的方式不同:

  • squash将新的提交消息添加到原始提交
  • fixup丢弃新的提交消息,只留下来自原始提交的消息
  1. 在“提交工具”窗口Alt+0中,选择包含要附加到较早提交的更改的已修改文件。
  2. 在 Git工具窗口 的Log选项卡中 ,右键单击要使用本地更改修改的提交,然后从上下文菜单中选择Fixup或Squash Into 。Alt+9
  3. 如果您选择压缩更改,如有必要,请修改提交消息。
  4. 单击Commit按钮上的箭头并选择Commit and Rebase。
Squash 提交

如果您需要合并与相同功能相关的任何两个提交,您可以将它们压缩为一个,以便更清晰的分支历史记录。

  1. 在 Git工具窗口 的Log选项卡中, 选择要合并为一个的提交,然后从上下文菜单中选择Squash Commits 。Alt+9
  2. Ctrl+Shift+K将更改推送到远程分支。
删除提交

您可以放弃当前分支中的推送提交,而无需创建恢复更改的额外提交。

  • 在Log视图中选择要丢弃的提交,然后从上下文菜单中选择Drop Commit 。
  1. 打开 Git工具窗口 Alt+9并切换到日志选项卡。
  2. 过滤日志,使其仅显示来自当前分支的提交:

    java开发工具idea
  3. 将显示Interactive Rebase对话框,其中包含当前分支中在选定提交之后进行的所有提交的列表:

    java开发工具idea

    如果“从此处交互式变基”选项被禁用,这可能是由于以下原因之一:

  • 选定的提交有几个父母
  • 选定的提交不在当前分支中
  • 选定的提交被推送到受保护的分支

要确定原因,请将操作悬停在上下文菜单中并在状态栏中查找消息:

java开发工具idea

    您可以对分支历史记录执行以下更改:

    1. 更改应用提交的顺序:使用向上箭头和向下箭头按钮在列表中上下移动提交。
    2. 选择一个提交:这是所有提交的默认状态。如果您需要撤消已对提交执行的操作,请单击Pick 应用操作回滚以便按原样应用此提交。
    3. 当 rebase 在提交时停止时,IntelliJ IDEA 窗口的右下角会弹出一条通知,让您继续或中止 rebase:
    4. java开发工具idea

      您可以在继续 rebase 之前使用上下文操作(例如Revert、Undo、Amend等)修改此提交。如果您不执行任何操作,则将按原样应用此提交。

      如果您已关闭通知,请从主菜单中选择Git | 继续变基以恢复它。

  • 将两个提交合并为一个:选择要合并到前一个提交中的提交,然后单击Squash或Squash按钮旁边的箭头,然后单击Fixup。
  • 如果您单击Squash,默认情况下来自两个提交的消息将被合并,因此如果您不修改生成的提交消息,此操作将反映在分支历史记录中。

    如果单击Fixup,则 fixup 提交的提交消息将被丢弃,因此此更改将在分支历史记录中不可见。

  • Ignore a commit:单击Drop以便不应用来自所选提交的更改。
  • 撤消所有更改:单击重置以放弃您已应用于提交的所有操作。

因此,Rebase Commits对话框会显示一个图表,说明您已应用于分支中的提交的所有操作,以便您可以在开始 rebase 之前查看它们:

java开发工具idea
  • 单击开始变基。
    1. 从主菜单中选择 Git | 变基:
    2. java开发工具idea
    3. 单击修改选项并选择–interactive。
    4. 从列表中,选择要将当前分支变基的目标分支:
    5. java开发工具idea
    6. 如果您需要从特定提交开始重新设置源分支而不是重新设置整个分支,请单击修改选项并选择–onto。在源分支字段中,输入您要将当前分支应用到新基础的提交的哈希值:
    7. java开发工具idea

      要复制提交哈希,请在Log中选择它,右键单击它并选择Copy Revision Number。

    8. 如果您要变基的分支当前未检出,请单击Modify options,单击Select another branch to rebase,然后从出现的列表中选择一个分支:
    9. java开发工具idea

      IntelliJ IDEA 将在开始 rebase 操作之前检查此分支。

    10. 如果要对分支中可访问的所有提交进行变基,请单击修改选项并选择–root。
    11. 如果您需要保留空提交,即不会更改其父项的任何内容的提交,请单击修改选项并选择–keep-empty(有关此选项的更多信息,请参阅git-rebase)。
    12. 单击变基。
    13. 将显示Interactive Rebase对话框,其中包含当前分支中在选定提交之后进行的所有提交的列表。

      java开发工具idea
    14. 您可以对分支历史记录执行以下更改:
    • 更改应用提交的顺序:使用向上箭头和向下箭头按钮在列表中上下移动提交。
    • 选择一个提交:这是所有提交的默认状态。如果您需要撤消已对提交执行的操作,请单击Pick 应用操作回滚以便按原样应用此提交。
    • 当 rebase 在提交时停止时,IntelliJ IDEA 窗口的右下角会弹出一条通知,让您继续或中止 rebase:

      java开发工具idea

      您可以在继续 rebase 之前使用上下文操作(例如Revert、Undo、Amend等)修改此提交。如果您不执行任何操作,则将按原样应用此提交。

      如果您已关闭通知,请从主菜单中选择Git | 继续变基以恢复它。

    • 将两个提交合并为一个:选择要合并到前一个提交中的提交,然后单击Squash或Squash按钮旁边的箭头,然后单击Fixup。
    • 如果您单击Squash,默认情况下来自两个提交的消息将被合并,因此如果您不修改生成的提交消息,此操作将反映在分支历史记录中。

      如果单击Fixup,则 fixup 提交的提交消息将被丢弃,因此此更改将在分支历史记录中不可见。

    • Ignore a commit:单击Drop以便不应用来自所选提交的更改。
    • 撤消所有更改:单击重置以放弃您已应用于提交的所有操作。

    因此,Rebase Commits对话框会显示一个图表,说明您已应用于分支中的提交的所有操作,以便您可以在开始 rebase 之前查看它们:

    java开发工具idea
  • 单击开始变基。
  • 重要通知:接厂商相关通知,JetBrains 将于 2022 年 10 月 1 日起全面上调 IDE、. NET 工具 和 All Products Pack 订阅产品价格。

    想要了解IntelliJ IDEA价格的朋友,欢迎咨询官方客服

    IntelliJ IDEA技术交流群:786598704      欢迎进群一起讨论

    标签:

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年8月10日
    下一篇 2022年8月10日

    相关推荐

    发表回复

    登录后才能评论