Git log以显示按类型排序的用户修改文件

问题描述 投票:1回答:3

对于某些工作报告,我必须发送本月修改过的文件,按类型分组。我一直在使用git log命令来显示文件名和状态,但是如果我可以通过文件扩展名对它进行排序也会对我有所帮助。 在this answer工作我得到: git log --no-merges --author="me" --after={2019-03-31} --name-status --pretty=format:"" | sort -u

现在我对如何按文件名对列表进行排序感到困惑。

这是当前的输出,但通常有几十个文件:

M   package.json
M   src/app/spa/components/component1/comp1-tpl.html
M   src/app/spa/components/component1/comp1-component.ts
M   src/app/spa/components/component1/comp1-services.ts
M   src/app/spa/components/component1/comp1-services.spec.ts
A   src/app/spa/components/component2/comp2-tpl.html
git git-log
3个回答
2
投票

按“文件名”,如果你的意思是路径:

git log --no-merges --author="me" --after={2019-03-31} --name-status --pretty=format:"" | sort -k2

如果您的意思是没有任何父目录的名称:

git log --no-merges --author="me" --after={2019-03-31} --name-status --pretty=format:"" | while read type path;do echo "$(basename $path) $type    $path";done | sort -u | cut -f2- -d' '

1
投票

我有个主意。在以下命令中添加“grep .ext”。为结果重定向文件中的输出。然后为其他扩展做同样的事情。最后,您将获得扩展所订购的完整文件。你了解我的想法吗?对于您的示例report.txt包含一个有序列表。

- > git log --no-merges --author =“me”--after = {2019-03-31} --name-status --pretty = format:“”| sort -u | grep“\ .html”>> report.txt

- > git log --no-merges --author =“me”--after = {2019-03-31} --name-status --pretty = format:“”| sort -u | grep“\ .json”>> report.txt

- > git log --no-merges --author =“me”--after = {2019-03-31} --name-status --pretty = format:“”| sort -u | grep“\ .ts”>> report.txt


1
投票

您可以在排序之前添加扩展名,如下所示:

> git log --no-merges --author="me" --after={2019-03-31} --name-status --pretty=format:"" | sed -r 's|.*(\.[^.]+)$|\1\t&|;' | sort -u
.html   A   src/app/spa/components/component2/comp2-tpl.html
.html   M   src/app/spa/components/component1/comp1-tpl.html
.json   M   package.json
.ts     M   src/app/spa/components/component1/comp1-component.ts
.ts     M   src/app/spa/components/component1/comp1-services.spec.ts
.ts     M   src/app/spa/components/component1/comp1-services.ts
© www.soinside.com 2019 - 2024. All rights reserved.