git - 如何使用 Intellij IDEA 进行交互式 rebase ?

标签 git intellij-idea

我想对分支进行交互式 rebase ,例如:

git rebase -i HEAD~4

在 IntelliJ IDEA 中找不到执行此操作的方法。如果可能的话,请提出建议。谢谢。

最佳答案

IntelliJ 12.1 中的 rebase 对话框使用最通用版本的 rebase 命令:

git rebase [-i] [--onto newbase] [upstream] [branch]

其中IntelliJ的“Onto”字段对应--onto newbase,IntelliJ的“From”字段对应“upstream”,IntelliJ的“Branch”字段对应“branch”。

在上面的 git rebase 命令中,所有参数都是可选的,而在 IntelliJ 中则不是。这意味着您必须使用 git rebase 命令并使用上面显示的一般形式来表达它。

请注意,您实际上对 rebase 命令的参数所做的是定义将在新目标位置重放的提交范围。通常,范围是 upstream..branch。如果您不熟悉提交范围,您应该仔细阅读。

让我们看一下您的示例,并假设您在分支“branch”上:

git rebase -i HEAD~4

首先让我们弄清楚范围是多少。因为你只有一个参数,HEAD~4,这对应于上游,即范围是 HEAD~4..branch 或者换句话说 HEAD~4 ..HEAD 在分支“分支”上。现在的问题是您的 --onto 目标是哪个。如果您避免 --onto,那么 git 会假定您的上游也是您的 --onto

这会产生:

git rebase -i --onto HEAD~4 HEAD~4 branch

现在您可以使用

填写 IntelliJ 的 rebase 对话框
  • 转到:HEAD~4
  • 来自:HEAD~4
  • 分支:分支

IntelliJ 实际上会强制您首先思考并确定您的范围和目标,这看起来更复杂,但这会阻止您在不了解结果会是什么的情况下进行 rebase 。

关于git - 如何使用 Intellij IDEA 进行交互式 rebase ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608812/

相关文章:

混帐 : Merge multiple commits from one branch into another

Gradle 创建一个空文件夹 `build/kotlin/sessions` ,为什么?当我删除它回来时,如何修复它?

intellij-idea - IntelliJ坏插件如何启动

git - Composer : Multiple Packages in one Repo

git - 如何修复从树到树的 Git 错误断开链接?

java - Intellij IDEA 工具栏可用性

python - 在 intellij 中导入新的 python 模块的最佳方法是什么?

java - JFreeChart 隐藏在另一个图表后面

git - GitHub.com 如何设置默认分支?

GIT .mailmap 按 repo 协议(protocol)工作,但在全局范围内不工作,为什么?