首页 > 解决方案 > git log 漂亮的单行输出,只有简短的哈希和文件名

问题描述

我需要将远程更改的文件列表作为一行获取,然后逐行处理以生成过时文件的列表。

但令我惊讶的是,在所有可能的漂亮格式 %tokens 中,没有一个可以获取文件名:https ://git-scm.com/docs/pretty-formats

git log --pretty=format:'%f' -- 'myfilename-to-check';

pretty=format:'%f' 会给我提交消息,但我怎样才能得到漂亮格式中的文件名。

是的,我知道我可以做 --name-only 或 --name-status 但这不允许我完全按照我的需要格式化输出。

是否没有显示文件名的格式 %token / %key ?

更新

抱歉,我忘了说明有多个文件名要检查:

git log --pretty=format:'%f' -- 'myfilename-to-check-1' 'myfilename-to-check-2' 'myfilename-to-check-3' 'myfilename-to-check-...etc...';

标签: git

解决方案


更改的文件没有这样的占位符。这是 bash 中的一种解决方法。

git rev-list HEAD -- myfile-to-check | while read commit;do
    echo $(git log -1 $commit --pretty=format:'%h-%f' --name-only)
done

git rev-list打印更改的提交哈希myfile-to-checkechogit log -1一一打印每个提交的短哈希、净化主题和更改文件。


推荐阅读