git-log漂亮的单行输出,只有简短的散列和文件名



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

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

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

漂亮=格式:"%f"会给我提交消息,但我如何才能在漂亮格式中获得文件名。

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

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

更新

很抱歉,我忘记声明有多个文件名需要检查:

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

更改的文件没有这样的占位符。以下是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-check的提交散列。echogit log -1逐个打印每个提交的短散列、净化的主题和更改的文件。

由于这似乎不受支持,您可以简单地将文件名连接到git日志输出的每一行,例如使用sed

git log --pretty=format:'%f' -- 'myfilename-to-check'| sed 's/$/ myfilename-to-check/'

最新更新