查找某个文件类型的所有git提交记录

9

找到包含特定文件的所有提交非常简单。

git log -- .\Database\Tables\sometable.sql

但是是否有一种简单的方法来查找一个文件类型的所有提交(递归到子目录下?)还是我需要编写一个脚本来完成这个任务?(从概念上讲...)
git log -- .\Database\*.sql --recursive
2个回答

9

看起来,也许你只需要转义*,这样它就不会被命令行扩展。 你似乎正在使用Windows,但我是在Linux上测试的:

git init
mkdir -p blue/red/green
touch blue/red/green/colors
git add blue/red/green/colors
git commit -m "colors and dirs"
touch blackAndWhite
git add blackAndWhite
git commit -m 'b&w'
git log -- \*ors

上一个 git log 的结果如下:
commit 8fdb718b5b616dd495c00eb7a6d123c33f7707e5
Author: <snipped>
Date:   Sun Oct 14 19:49:43 2012 -0400

    colors and dirs

关于 Windows 中 * 的转义问题......或许可以将其放在单引号或双引号中?如果我有什么想法,我会添加上去的。


刚才意识到我有从工作带回来的装有Git的Windows笔记本电脑……在Git bash窗口中,我上面的“脚本”可以正常运行。也许你使用\作为路径分隔符只是一个小错误?或者你使用的Windows Git客户端与我的不同? - altendky
是的,使用 posh-git(powershell)。 - Tim Jarvis
好的,所以从 bash 提示符中它按照我想要的方式工作。一定是 PowerShell 的问题,就像你建议的那样。 - Tim Jarvis
如果您能够想出如何在PowerShell中转义*,使其不会被扩展,那么它也应该可以在那里正常工作。我注意到,如果通配符在当前目录(Linux bash或Git bash)中找不到匹配项,则它们会被传递给git log并进行处理。只有当通配符确实匹配某些内容时,才真正需要进行转义。 - altendky
很烦人,我无法弄清如何在PS中转义,但至少我可以从bash中完成我需要的操作,现在只能这样了...除非有人知道如何转义 <希望/>。 - Tim Jarvis
可能是重音符号/反引号`。幸运的是,我不太确定如何在stackoverflow上转义反引号。http://serverfault.com/questions/47811/what-is-the-literal-escape-character-in-powershell - altendky

0

我想查看存储库中所有用户按类型贡献的情况。我找到了一个能够做到这一点的 Ruby 包,git fame此处)。如果您键入 git fame . --by-type,它将输出类似于以下内容:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接