是否可以在不使用交互式rebase的情况下重新定义和编辑git提交?

时间:2016-04-06 21:09:10

标签: git rebase

我经常使用git rebase -i,我希望找到一种方法来加快这个过程。

例如,我想编辑我的git历史记录中的第二个最新提交。 我可以用:

git rebase -i HEAD~2

...然后将提交设置为“e”并保存

我希望能够做到这样的事情:

git rebase edit HEAD~2

可以以这种方式使用rebase吗?

1 个答案:

答案 0 :(得分:1)

不是直接的,但您可以编写一个脚本来执行此操作,因为git rebase -i会调用两个不同的编辑器。更确切地说,它首先在pick命令集上调用序列编辑器,然后为您已更改的文件调用核心编辑器 {{1 }} pickedit

因此,通过将序列编辑器设置为与普通交互式编辑器不同的命令,可以使交互式rebase交互比平常少。 (您还可以调整核心编辑器设置,使其完全不相互作用,即使在交互式行为时也是如此。)

序列编辑器取自reword(如果已设置)或$GIT_SEQUENCE_EDITOR,或使用标准后备。核心编辑器取自git config --get sequence.editor(如果已设置)或$GIT_EDITOR,或使用标准后备广告。

标准后备是使用git config --get core.editor,或者如果未设置,则使用$VISUAL,或者如果未设置,请使用已编译的默认值(通常为$EDITORvi)。

将所有内容放在一起(并使用git-sh-setup中的位),我将以下完全未经测试的脚本写入 reword (不修改)提交。很明显如何重新修改它以允许修改(编辑)提交。

vim