You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让git pull输出显示每个文件的最后提交作者?

实现git pull显示文件最后贡献者的方法

当然可以啦!其实git本身并没有给git pull直接添加显示文件最后贡献者的内置选项,但咱们可以组合几个命令来实现这个需求,分两种常用场景给你说明:

场景1:拉取完成后,查看本次pull涉及文件的最后作者

拉取代码之后,执行下面的命令就能列出本次pull变更的所有文件,以及每个文件最后一次修改的作者:

git log --name-only --oneline HEAD@{1}..HEAD | grep -v "^[0-9a-f]" | while read file; do
  if [ -n "$file" ]; then
    author=$(git log -1 --pretty=format:"%an" "$file")
    echo "$file - $author"
  fi
done

命令解释:

  • HEAD@{1}..HEAD:指定范围为本次pull之前的版本到当前版本,精准筛选出pull带来的变更
  • grep -v "^[0-9a-f]":过滤掉日志里的提交哈希行,只保留变更的文件名
  • git log -1 --pretty=format:"%an" "$file":获取该文件最后一次提交的作者名称(%an表示作者名,换成%ae可以显示邮箱)

场景2:先查看将要拉取的文件作者,再决定是否pull

如果想先确认远程分支的变更文件及对应作者,再执行拉取,可以先fetch远程代码,再运行:

git fetch origin
git diff --name-only main..origin/main | while read file; do
  if [ -n "$file" ]; then
    author=$(git log -1 --pretty=format:"%an" origin/main -- "$file")
    echo "$file - $author"
  fi
done

注意:把main换成你实际使用的分支名称,比如master或者其他自定义分支

简化操作:做成Git别名

要是觉得每次敲长命令麻烦,可以把场景1的命令做成Git别名,以后一键执行:

  1. 打开你的.gitconfig文件(通常在用户根目录下)
  2. 添加以下内容:
[alias]
  pull-authors = "!git pull && git log --name-only --oneline HEAD@{1}..HEAD | grep -v \"^[0-9a-f]\" | while read file; do if [ -n \"$file\" ]; then author=$(git log -1 --pretty=format:\"%an\" \"$file\"); echo \"$file - $author\"; fi done"
  1. 保存后,以后直接输入git pull-authors,就能完成拉取并自动显示文件和对应最后作者啦!

内容的提问来源于stack exchange,提问作者František Heča

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:36:33