【问题标题】:Git blame on files/folders level?Git责备文件/文件夹级别?
【发布时间】:2019-08-29 14:07:11
【问题描述】:

是否可以在文件/文件夹级别而不是“逐行”级别git blame

命令git blame 通常会显示影响给定文档中每一行的最后一次提交,但我想知道您是否获得了影响每个文件的最后一次提交的列表。从选项来看,使用git blame 是不可能的,但是还有其他一些命令可以做类似的事情吗?

编辑:理想情况下,我希望获得一个包含文件名的列表,其中对于每个文件,我们还可以获得提交哈希、最后编辑文件的人的姓名以及日期。

【问题讨论】:

    标签: git git-blame


    【解决方案1】:

    不确定它是否适合您的需求,但

    git log -1 --pretty=format:"%an" -- path/to/file
    

    将输出最后修改文件(或目录)的人的姓名。

    在 cmets 之后编辑:

    要遍历目录的文件,在 bash 上下文中,使用 xargs

    git ls-files path/to/directory/ | xargs -n 1 git log -1 --pretty=format:"%h %an %cd" --
    

    ...并且可选地,使用合理的中间列对眼睛来说稍微容易一些:

    git ls-files path/to/directory/ | xargs -n 1 git log -1 --pretty=format:"%h %<(20,trunc)%an %cd" --
    

    【讨论】:

    • 感谢您的回答,实际上我还想找到我设法使用您的解决方案与git log -1 --pretty=format:"%h %an%cd" -- path/to/file 完成的提交哈希 + 日期,但理想情况下,我希望此列表用于 每个文件(在某个文件夹中)。
    • @flawr 是的,我得到了你想要的。我想你需要以某种方式循环目录的文件,让我考虑一下:-)
    • 我想我找到了一个有点笨拙的解决方案,或多或少有效但不是很优雅,再次使用您的建议:for f in ./*.*; do echo $f; git log -1 --pretty=format:"%h %an %cd" $f; done 但如果您发现任何问题,请告诉我:)
    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 2016-06-13
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 2014-01-28
    相关资源
    最近更新 更多