交互式 rebase 期间编写提交消息时显示差异

18

进行普通的git提交时,git commit --verbose在写提交信息时会在文本编辑器中显示差异。

假设我正在进行交互式变基(git rebase --interactive)以编辑先前的提交。要“继续”变基,我运行git rebase --continue。这将打开一个文本编辑器以编辑提交消息,但它不会显示差异。在更改提交后,如何在交互式变基期间(重新)编写提交消息时显示差异?

git rebase --continue --verbose似乎不是有效的命令...


git rebase --continue 什么时候会打开文本编辑器? - Arkadiusz Drabczyk
在交互式变基期间选择要编辑的提交后,使用git add标记更改后,git rebase --continue会打开一个文本编辑器。@Arkadiusz Drabczyk - Flux
嗯,好的,我明白了。看我的回答。 - Arkadiusz Drabczyk
1
有点相关:https://dev59.com/gWQn5IYBdhLWcg3wmH8s - Flux
3个回答

15

展示差异:

git -c commit.verbose=true rebase --continue

要使所有提交具有详细说明而无需每次指定-c commit.verbose=true,请将以下内容添加到~/.gitconfig:

[commit]
    verbose = true
[commit]
    verbose = true

参考文献:man git-config


1
要在命令行中为当前用户启用详细提交,请执行 git config --global commit.verbose true - Burkart

2

您可以做:

git -c commit.verbose=true rebase --continue

如果你厌烦了复制那个命令,你可以在~/.gitconfig中创建一个别名:
[alias]
    myrebasecontinue = "!git -c commit.verbose=true rebase --continue"

现在只需要执行以下操作:

git myrebasecontinue

嗯,似乎并没有显示差异。我使用的是git 2.7.4版本,这会有影响吗? - Flux
1
是的,快速查看git源代码可以发现commit.verbose是在git 2.9中引入的。 - Arkadiusz Drabczyk

0

在 rebase 过程中,

git diff

显示尚未添加到提交的更改内容,

git diff --cached 

显示您提交的新更改,以及

git show

显示您正在编辑的提交中的原始更改。


1
是的,我知道。我所要求的是在文本编辑器中显示差异(类似于“git commit --verbose”中显示的差异)。 - Flux
@Flux,我在Vim中执行:r !git diff,不知道Git本身是否有自动执行此操作的功能。恐怕没有。 - kostix
你可以编写一个脚本来运行git命令,将输出捕获到临时文件中,在后台中打开它,并运行git rebase --continue - choroba
这正是我在谷歌上搜索的内容!不错。 - Caleb Jay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接