Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有git命令显示由谁提交/编辑的文件?_Git - Fatal编程技术网

是否有git命令显示由谁提交/编辑的文件?

是否有git命令显示由谁提交/编辑的文件?,git,Git,是否有git命令显示由谁提交/编辑的文件 输出应如下所示: FileName AuthorName fileA user1 user2 fileB user 3 fileC user1 您必须使用自己的git log-pretty=format选项 在-pretty中,您可以设置颜色并选择要显示的任何内容 在您的情况下,您希望显示作者-选择以下任一选项: %aX-根据您的需要选择 格式: format:format允许您指定要显示的信息。它的工作原理有点像printf格式,但值得注意的例

是否有git命令显示由谁提交/编辑的文件

输出应如下所示:

FileName AuthorName

fileA user1 user2 
fileB user 3 
fileC user1

您必须使用自己的git log-pretty=format选项

在-pretty中,您可以设置颜色并选择要显示的任何内容

在您的情况下,您希望显示作者-选择以下任一选项:

%aX-根据您的需要选择

格式:

format:format允许您指定要显示的信息。它的工作原理有点像printf格式,但值得注意的例外是,您得到的换行符是%n,而不是\n

例如,格式:%h的作者是%an,%ar%n标题是>>%s 我不认为用一个git命令就可以实现这一点

在sh、bash或zsh中,可以执行以下操作:

git ls files-z | xargs-null-L1-I%sh-c printf%'';git注释-p%| sed-nr'/^author/{s/^author.*/\1/;p}'| sort | uniq | awk'{printf\$0\\}END{print\\} 或者,更具可读性:创建脚本文件print_file_和_its_authors.sh:

!/垃圾箱/垃圾箱 printf$1''输出文件名,不附加换行符。 输出文件作者和换行符: git注释-p$1\ |sed-nr'/^author/{s/^author./\1/;p}\ |排序| uniq\ |awk'{printf$0}END{print}' 然后做:

chmod u+x print_file_和_its_authors.sh git ls files-z | xargs-null-L1./print_file_和_its_authors.sh
如果您知道特定的一个或多个文件,可以对每个文件使用git log-pretty=%an-some_file | sort-u列出编辑此文件的作者。至于您期望的输出格式,您可以采取进一步的措施。此命令列出当前头部的所有文件,包括已删除的文件及其编辑器

git log --pretty="/ %h" --name-only | grep -v ^$| grep -v ^/ | sort -u | while read line
do
authors=$(git log --pretty=%an -- "$line" | sort -u)
echo $line,$authors
done

git log-pretty=/%h-name only | grep-v^$| grep-v^/| sort-u部分用于查找所有文件,包括已删除的文件。我想一定有更简单的方法。

git-log可以做到,谷歌是最好的选择rest@EngineerDollerygit日志的输出非常混乱。是否有一种不进行文件处理的方式提取信息?据我所知,您希望收集提交者或作者的问题?或者两者都有?在整个回购历史中,回购协议中每个文件的名称,对吗?或者,可能只是为了收集实际作者/提交人,即在当前文件状态下至少创建了一行的作者/提交人?编辑问题。希望更清楚。你的第一个假设是正确的。
git log --pretty="/ %h" --name-only | grep -v ^$| grep -v ^/ | sort -u | while read line
do
authors=$(git log --pretty=%an -- "$line" | sort -u)
echo $line,$authors
done