如何设置`git log`命令的标识以使其输出类似于`git whatchanged`命令?

4

每个人都会: git-log和git-whatchanged有什么区别?

鼓励新用户使用“log”命令。现在,这些命令已经统一,只是默认设置不同。

我最近才发现了 git whatchanged,但是发现它的输出:

commit deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
Author: Egg Sample <mail@example.com>
Date: Mon Jan 28 16:32:04 2019 -0800

    change some files

:100777 100644 abaddad1 feeb1e42 M      src/changemymode.txt
:100644 100644 1234abcd abcd1234 M      src/changemycontent.txt
:000000 100755 00000000 6600abcd A      src/addme.txt
:100755 000000 feed1bee 00000000 D      src/deleteme.txt

最近我遇到了一个特殊的工作流(涉及到一个有很多文件模式更改的分支),这个工具对我非常有用。出于好奇,我想知道如何使git log以这种方式运行:

  • 显示提交信息,
  • 更改的文件的旧模式、新模式、哈希值、Modified|Added|Deleted和文件名
  • 而不是差异本身
  • (默认情况下排除合并,也称为git whatchanged的行为)。

我想这可能与--stat--format选项有关,但是git log --help似乎没有提到任何关于在这些选项中打印文件模式和对象哈希的内容,并且我快速浏览文档时没有发现任何问题。


2
git whatchanged = git log --raw(以及根据whatchanged页面,也要加上--no-merges)。 - torek
@torek 好的,就这样吧。现在我知道了该格式是“原始差异格式中的更改摘要”。谢谢! - merkworku
1个回答

1

仅仅为了不让这个问题被忽略:

通过修订后的答案,git的新版本在man git-whatchanged中解释了这个问题。

whatchanged命令本质上与git-log(1)相同,但默认显示原始格式的diff输出并跳过合并。

所以:

git log --raw --no-merges

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