我正在处理一个包含大量文件的git存储库,想要提取两个提交之间文件变更的数量,应该如何操作。
编辑:根据c00kiemon5ter的提醒,“--format=oneline”选项包含了提交哈希和标题,因此这将始终计算文件数加一。
git whatchanged
工具会显示出被修改的文件的摘要。默认情况下会列出所有的提交记录,但你也可以限制只列出最近n次提交记录:
git whatchanged -1
计算文件数量:git whatchanged -1 --format=oneline | wc -l
详见此处,了解更多信息请参考git help whatchanged
。
--format=oneline
包括提交哈希 / 标题。 - c00kiemon5tergit whatchanged -1 --format=oneline | tail -n +2 | wc -l
- Bobby Jackgit diff HEAD^..HEAD --name-only
- 将会列出在HEAD
和比HEAD^
早一个版本的文件改动列表。你可以将HEAD^
替换为"from"提交的SHA1值,将HEAD
替换为"to"提交的SHA1值:
git diff <SHA1-of-from-commit>..<SHA1-of-to-commit> --name-only
因此,如果你将输出导入到 wc -l
中,它会显示提交之间更改文件的数量。git diff master..HEAD
。 - TbWill4321git diff master..HEAD --name-only --oneline --stat | wc -l
。 - dx_over_dtgit show --stat
这将给出类似以下的文件更改列表:
1个文件已更改,1个插入(+), 1个删除(-)
如果您不想从最新版本获取信息,可以选择添加提交代码。
git show --stat {commit code without brackets}
--shortstat
以简明扼要的方式查看提交信息:git show --shortstat <哈希值>
。请访问 https://git-scm.com/docs/git-show 获取更多选项。 - Nolan Amy使用以下方法:
git log --oneline --name-status <HASH> -1
例如:
$ git log --oneline --name-status bb3ae49 -1
M .vim/spell/en.utf-8.add
M .vim/spell/en.utf-8.add.spl
这个功能的工作方式类似于
git whatchanged --oneline --name-status <HASH> -1
git whatchanged
。 - Sean the Bean在Windows中:
git whatchanged -1 --format=oneline | find /v /c ""
重要的是,你必须将其他解决方案中使用的 wc 命令替换为以下命令:
| find /v /c ""
git whatchanged
? - Kerrek SBgit show --oneline --name-only commit_hash_a..commit_hash_b
当然,这个命令将会打印出提交信息以及文件列表。但是,对于简单的用例已经足够好了。 - sdevikar