我需要将远程更改的文件列表作为一行,然后逐行处理以生成过时文件列表。
但我很惊讶,在所有可能的漂亮格式%令牌中,没有一个可以获得文件名: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
的提交散列。echo
和git log -1
逐个打印每个提交的短散列、净化的主题和更改的文件。
由于这似乎不受支持,您可以简单地将文件名连接到git日志输出的每一行,例如使用sed
git log --pretty=format:'%f' -- 'myfilename-to-check'| sed 's/$/ myfilename-to-check/'