git log 漂亮的单行输出,只有简短的哈希值和文件名

标签 git

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

但令我惊讶的是,在所有可能的漂亮格式% token 中,没有一个可以获取文件名: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...';

最佳答案

对于已更改的文件,没有这样的占位符。这是 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 log 漂亮的单行输出,只有简短的哈希值和文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65000009/

相关文章:

git - 如何在 .gitignore 中获得等效于 .hgignore 的正则表达式 ^var/(?!\log|.dummy) 和 ^var/log/(?!\.dummy) ?

几天前创建的分支的 Git rebase

git - 从 2 个文件夹的差异创建补丁文件

git - 有没有办法检查 git 标签是否与相应提交的内容匹配?

git - 如何在接收后 Hook 中获取推送者的信息?

database - 在 wordpress 站点 git 上的协作。如何共享数据库?

git rebase 远程,但在本地保留更改以供以后提交

git - 如何从 git 源 pull 并推送到另一个

git - 我如何使用 Github api 获取 pull 请求的审阅者列表?

git - 将现有的 Android Studio 项目添加到现有的 GitHub 存储库