【问题标题】:Show diff when writing commit messages during an interactive rebase在交互式变基期间编写提交消息时显示差异
【发布时间】:2018-06-07 21:30:23
【问题描述】:

在进行常规 git 提交时,git commit --verbose 在编写提交消息时会在文本编辑器中显示差异。

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

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

【问题讨论】:

  • git rebase --continue 什么时候打开文本编辑器?
  • @Arkadiusz Drabczyk 在交互式 rebase 期间选择要编辑的提交后,在 git add 标记更改后,git rebase --continue 打开一个文本编辑器。
  • 嗯,好吧,我想我明白了。看我的回答。

标签: git git-rebase git-commit


【解决方案1】:

显示差异:

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

要使所有提交都变得详细而不必每次都指定-c commit.verbose=true,请将其添加到~/.gitconfig:

[commit]
    verbose = true

参考:man git-config。

【讨论】:

    【解决方案2】:

    你可以这样做:

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

    如果您厌倦了复制该命令,您可以创建一个 在您的~/.gitconfig 中使用别名:

    [alias]
        myrebasecontinue = "!git -c commit.verbose=true rebase --continue"
    

    现在就做:

    git myrebasecontinue
    

    【讨论】:

    • 嗯,似乎没有显示差异。我使用 git 2.7.4 重要吗?
    • 是的,快速查看git 源代码可以发现commit.verbose 是在git 2.9 中引入的
    【解决方案3】:

    在一个变基的中间,

    git diff
    

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

    git diff --cached 
    

    向您显示您提交的新更改,并且

    git show
    

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

    【讨论】:

    • 是的,我知道这一点。我要求的是在文本编辑器中显示差异(类似于 git commit --verbose 显示的差异)。
    • @Flux,我在 Vim 中使用 :r !git diff,不知道 Git 本身是否有东西可以自动执行此操作。恐怕没有。
    • 您始终可以编写一个脚本来运行 git 命令,将输出捕获到临时文件中,在编辑器中(在后台)打开它,然后运行 ​​git rebase --continue。
    • 这正是我在谷歌上搜索的目标!不错
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多