SVN的日志有一个“-v”模式,输出每次提交中更改的文件的文件名,如下所示:
jes5199 $ SVN </跨度> log -v————————————————– ———————-r1 | jes5199 ……
git show 也是一个伟大的命令。
git show
有点像 svn diff ,但你可以传递一个提交guid并看到差异。
svn diff
我用这个:
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
还有更多选择, 看看文档 。
我每天都使用它来显示更改过的文件的历史记录:
git log --stat --pretty=short --graph
为了简短起见,请在您的内容中添加别名 .gitconfig 通过做:
.gitconfig
git config --global alias.ls 'log --stat --pretty=short --graph'
的 注意: 强> git whatchanged 已弃用,请使用 git log 代替
git whatchanged
git log
鼓励新用户使用 GIT-日志[1] 代替。该 whatchanged 命令与...基本相同 GIT-日志[1] 但默认显示 原始格式diff输出和跳过合并。 该命令主要是出于历史原因;很多人的手指 很久以前就学会了Git的人 git log 是通过阅读发明的 Linux内核邮件列表经过培训可以输入。
鼓励新用户使用 GIT-日志[1] 代替。该 whatchanged 命令与...基本相同 GIT-日志[1] 但默认显示 原始格式diff输出和跳过合并。
whatchanged
该命令主要是出于历史原因;很多人的手指 很久以前就学会了Git的人 git log 是通过阅读发明的 Linux内核邮件列表经过培训可以输入。
您可以使用该命令 git whatchanged --stat 获取每个提交中更改的文件列表(以及提交消息)。
git whatchanged --stat
git diff --stat HEAD^! 显示上次提交的已更改文件和添加/删除的行数( HEAD )。
git diff --stat HEAD^!
HEAD
在我看来,没有一个命令可以获得简单的输出,只包含文件名,并且一次添加和删除几次提交的行数,所以我为此创建了自己的bash脚本:
#!/bin/bash for ((i=0; i<=$1; i++)) do sha1=`git log -1 --skip=$i --pretty=format:%H` echo "HEAD~$i $sha1" git diff --stat HEAD~$(($i+1)) HEAD~$i done
被称为例如。 ./changed_files 99 从中获得简洁形式的变化 HEAD 至 HEAD~99 。可以用管道输送。至 less 。
./changed_files 99
HEAD~99
less
如果您只想获取文件名而不使用其余的提交消息,则可以使用:
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
将显示已在本地分支上更改但尚未合并到远程主分支上的所有文件。