如何在git中找到从一个提交更改为另一个提交的文件数
我正在处理一个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 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
Fromman 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 ""