SVN的日志有一个“-v”模式,输出每次提交时更改的文件的文件名,如下所示:

jes5199$ svn log -v
------------------------------------------------------------------------
r1 |   jes5199 | 2007-01-03 14:39:41 -0800 (Wed, 03 Jan 2007) | 1 line
Changed paths:
   A /AUTHORS
   A /COPYING
   A /ChangeLog
   A /EVOLUTION
   A /INSTALL
   A /MacOSX

是否有一种快速的方法可以在Git中获得每次提交时更改的文件列表?


当前回答

我通常使用这些来获取日志:

$ git log --name-status --author='<Name of author>' --grep="<text from Commit message>"

$ git log --name-status --grep="<text from Commit message>"

其他回答

Git show也是一个很棒的命令。

它有点像svn diff,但你可以给它传递一个git提交哈希,然后看到那个diff。

注意:git whatchanged已弃用,请使用git log代替

鼓励新用户使用 git-log[1]。的 什么改变命令本质上是一样的 Git-log[1],但默认显示 原始格式差异输出和跳过合并。 保留该司令部主要是出于历史原因;许多人的手指 在Git日志发明之前,人们通过阅读来学习Git Linux内核邮件列表都训练打字。


您可以使用命令git whatchanged——stat来获得每次提交时更改的文件列表(以及提交消息)。

参考文献

https://git-scm.com/docs/git-whatchanged

我通常使用这些来获取日志:

$ git log --name-status --author='<Name of author>' --grep="<text from Commit message>"

$ git log --name-status --grep="<text from Commit message>"

我正在使用:

git diff-tree -v --name-status -r <commit-id>

它显示了非常相似的输出,如svn log -v

另一个有用的命令是git diff-tree <hash>,其中哈希也可以是一个哈希范围(由<old>..新< >符号)。输出示例:

$ git diff-tree  HEAD
:040000 040000 8e09a be406 M myfile

字段为:

源模式,目标模式,源哈希,目标哈希,状态和文件名

状态是您所期望的状态:D(删除),A(添加),M(修改),等等。请参阅手册页以获得完整的描述