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-only --pretty=format: <branch name>

然后可以扩展到使用包含文件名的各种选项:

git log --name-status --pretty=format: <branch name>

git log --stat --pretty=format: <branch name>

使用此方法时需要注意的一点是,输出中有一些必须忽略的空行。如果您想查看本地分支上已更改的文件,但尚未推送到远程分支,并且不能保证已经从远程导入了最新的文件,那么使用此功能可能很有用。例如:

git log --name-only --pretty=format: my_local_branch --not origin/master

将显示本地分支上已更改的所有文件,但尚未合并到远程上的主分支。

其他回答

我每天都用它来显示文件更改的历史:

git log --stat --pretty=short --graph

为了保持简短,在你的.gitconfig中添加一个别名:

git config --global alias.ls 'log --stat --pretty=short --graph'

注意: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-only --oneline

——名义

只显示已更改文件的名称。文件名通常用 utf - 8。有关编码的详细信息,请参见 Git-log1手册页。

——oneline

这是“——pretty=oneline -abbrev-commit”一起使用的缩写。

输出

我用这个:

git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort | uniq

它只输出文件列表及其状态(添加,修改,删除):

A   sites/api/branding/__init__.py
M   sites/api/branding/wtv/mod.py
...

更改文件的完整路径名:

git log --name-only

更改文件的完整路径名称和状态:

git log --name-status

对于缩略路径名和已更改文件的diffstat:

git log --stat

还有更多的选择。查看文档。