如何在git中找到从一个提交更改为另一个提交的文件数

如何在git中找到从一个提交更改为另一个提交的文件数,git,Git,我正在处理一个git存储库,该存储库包含大量文件,这些文件在一次提交到另一次提交时发生了更改,如何提取文件的数量在提交时发生了更改。使用以下方法: git log --oneline --name-status <HASH> -1 这就像 git whatchanged --oneline --name-status <HASH> -1 git whatchanged--oneline--name status-1 EDIT:“这将始终将文件加上一,因为--form

我正在处理一个git存储库,该存储库包含大量文件,这些文件在一次提交到另一次提交时发生了更改,如何提取文件的数量在提交时发生了更改。

使用以下方法:

git log --oneline --name-status <HASH> -1

这就像

git whatchanged --oneline --name-status <HASH> -1
git whatchanged--oneline--name status-1
EDIT:“这将始终将文件加上一,因为
--format=oneline
包括c00kiemon5ter提到的提交哈希/头”


git whatchanged
工具显示已修改文件的摘要。它本身列出了所有提交,但您也可以将其限制为仅最近的n次提交:

要计数文件,请执行以下操作:

git whatchanged -1 --format=oneline | wc -l

请参阅git help whatchanged。

除了上面列出的方法之外,您还可以执行以下操作:

git diff HEAD^..HEAD——仅限名称
——将给出在
HEAD
和HEAD之前的一个版本之间更改的文件列表(
HEAD^
)。您可以用“从”提交的SHA1替换
HEAD^
,用“到”提交的SHA1替换
HEAD

git diff--仅限姓名

因此,如果通过管道将输出传输到
wc-l
,它应该会提供提交之间更改的文件数

git show --stat
这将提供如下更改的文件列表:

1个文件已更改,1个插入(+),1个删除(-)

如果不想从最新版本中获取信息,可以选择添加提交代码

git show --stat {commit code without brackets}
在windows中:

git whatchanged -1 --format=oneline | find /v /c ""
重要的windows特定部分是,您必须将其他解决方案中使用的wc命令替换为:

  | find /v /c ""

也许这是个好答案。你为什么把它放在评论里而不是作为回答?很抱歉,有时候我就是不明白。@Oltarus:好的,完成:-)看起来不够大,不能保证答案,我也不确定它是否真的满足需要。不过,在检查了一些文档之后,似乎确实如此!请注意,这将始终将文件加上一,因为
--format=oneline
包含提交哈希/头。
git whatchanged-1--format=oneline | tail-n+2 | wc-l
From
man git whatchanged
;“保留该命令主要是出于历史原因。”“鼓励新用户改用git日志(1)。@StéphaneGourichon:这个答案主要是出于历史原因保留的。”。我们鼓励新用户找到不同的答案:-)能够在任意提交之间计算文件数量更有用,而不仅仅是在一次提交中更改的文件。请注意,它也适用于分支名称和标记(当然还有其他提交简写,除了HEAD和HEAD^),这在我查找分支和master之间更改的总文件时确实有所帮助
git diff master..HEAD
这应该是公认的答案,因为不鼓励使用
git whatchanged
。使用
--shortstat
直接切入点:
git show--shortstat
。有关更多选项,请参阅。
git whatchanged -1 --format=oneline | find /v /c ""
  | find /v /c ""