git - 是否有一个 git 命令可以显示谁提交/编辑了哪些文件?

标签 git

是否有一个 git 命令可以显示谁提交/编辑了哪些文件?

输出应该是这样的:

FileName AuthorName

fileA user1 user2 
fileB user 3 
fileC user1

最佳答案

我认为您无法通过单个 git 命令来实现这一目标。

shbashzsh 中,您可以执行以下操作:

git ls-files -z | xargs --null -L1 -I % sh -c "printf %' '; git annotate -p % | sed -nr '/^author /{s/^author (.*)/\1/;p}' | sort | uniq | awk '{printf (\$0 \" \")}END{print \"\"}'"

或者,更具可读性:创建一个脚本文件print_file_and_its_authors.sh:

#!/bin/sh

printf $1' '  # Output filename without appending a line break.

# Output file authors and a line break:
git annotate -p $1 \
    | sed -nr '/^author /{s/^author (.*)/\1/;p}' \
    | sort | uniq \
    | awk '{printf ($0 " ")}END{print ""}'

然后执行:

chmod u+x print_file_and_its_authors.sh
git ls-files -z | xargs --null -L1 ./print_file_and_its_authors.sh

关于git - 是否有一个 git 命令可以显示谁提交/编辑了哪些文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37232026/

相关文章:

git - 有哪些工具可以简单地一次性共享 git 存储库?

windows - 混帐 "fatal: .git/index: index file open failed: Permission denied"

linux - 在 SUSE 上的任何包含文件夹下都找不到 zlib.h,但存在 libz.so.1

git - 如何在同一台计算机上与多个用户一起使用 Git?

macos - 在私有(private)网络上使用 git 存储库设置 homebrew tap

git - 在不影响当前分支的情况下从另一个分支获取更改

node.js - 运行 react 脚本测试时为 "Error: spawn git ENOENT"

git - 将 master 分支旋转到 feature 分支

git - BFG Repo Cleaner - 已删除的文件仍在提交更改中

git - 如何在命令输出更改时触发 CMake 重新配置