我想对一个分支执行交互式的变基操作,例如:
git rebase -i HEAD~4
我在IntelliJ IDEA中没有找到这样做的方法。如果可能的话,请给予建议。谢谢。
我想对一个分支执行交互式的变基操作,例如:
git rebase -i HEAD~4
我在IntelliJ IDEA中没有找到这样做的方法。如果可能的话,请给予建议。谢谢。
在IntelliJ 12.1中,rebase对话框使用最通用的rebase命令版本:
git rebase [-i] [--onto newbase] [upstream] [branch]
在IntelliJ中,“Onto”字段对应于--onto newbase
,“From”字段对应于“upstream”,而“Branch”字段则对应于“branch”。
在上述git rebase命令中,所有参数都是可选的,而在IntelliJ中它们不是。这意味着您必须使用上面显示的一般形式来表达您的git rebase命令。
请注意,实际上使用rebase命令的参数定义了将在新目标位置重播的提交范围。通常,该范围为upstream..branch
。如果您不熟悉提交范围,则应阅读有关它们的内容。
让我们看看您的示例并假设您正在“branch”分支上:
git rebase -i HEAD~4
首先让我们确定范围。由于您只有一个参数HEAD~4
,这对应于上游,即范围为HEAD~4..branch
或者换句话说,在分支“branch”上是HEAD~4..HEAD
。现在的问题是你的--onto目标是什么。如果避免使用--onto
,那么git会假定您的上游也是您的--onto
。
这将产生以下结果:
git rebase -i --onto HEAD~4 HEAD~4 branch
现在你可以使用IntelliJ的rebase对话框填写:
HEAD~4
HEAD~4
branch
实际上,IntelliJ强制你首先思考并确定范围和目标,这看起来更复杂,但可以防止你在不理解结果的情况下进行rebase操作。