【问题标题】:How do I make git show diff when rewording a commit message during rebase -i?在 rebase -i 期间改写提交消息时如何使 git show diff?
【发布时间】:2013-05-23 18:20:22
【问题描述】:

我总是使用git commit --verbose。当我在git rebase --interactive 期间改写提交消息时,是否有等效的选项/设置可以让 git 向我显示差异?

【问题讨论】:

  • 我不这么认为。在编辑器中自己做怎么样,例如在 vi :r !git diff HEAD^ 或类似的?
  • @chirlu 哦,是的,这是一个方便的解决方法,谢谢。
  • @AdamMonsen,您如何“在 git rebase --interactive 期间改写提交消息”?您是在初始屏幕中执行此操作,将“pick”替换为“reword”并直接给出新消息,还是将“pick”替换为“edit”并使用“git commit --amend”来更改提交消息?
  • @Vampire,好问题。我说的是前者:将“pick”更改为“reword”。但简单地使用“编辑”听起来像是另一个很好的解决方法!我不知道“reword”和“edit”之间可能还有其他一些区别(除了明显的用户可见区别)。

标签: git rebase


【解决方案1】:

根据您在 cmets 中的回答,执行git diff HEAD^ 对您没有帮助,除非您只想重写最后一次提交。

但在这种情况下,rebase 无论如何都是错误的工具。相反,您可以简单地执行 git commit --amend --verbose 而不更改索引,然后编辑提交消息,获得您要求的差异视图。

如果你想用 diff 视图改写旧的或多个提交消息,只需使用 edit 节而不是 reword 节,然后使用 git commit --amend --verbose 而不在每个索引中更改代码提交。

reword 应该只是使用edit 的快捷方式,然后执行git commit --amend -m "new message" 而不进行任何只会更改提交消息的更改。

您还可以将git commit --amend --verbosegit commit --verbose 定义为别名,这样您就可以节省一些输入并且可以e。 G。只需执行git cavgit c --amend

【讨论】:

  • 而不是在交互式 rebase 中使用 edit 命令,这将使您进入必须键入 git commit --amend --verbose 以编辑提交然后 git rebase --continue 的 shell,您只需在后面添加一行exec git commit --amend --verbose 的相应提交。这将使您直接进入该提交的编辑器,并在您退出编辑器后继续变基。
【解决方案2】:

显示差异:

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

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

[commit]
    verbose = true

参考:man git-config

【讨论】:

    猜你喜欢
    • 2010-12-25
    • 2014-03-12
    • 2017-07-04
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2018-08-23
    相关资源
    最近更新 更多