我想知道如何使用git blame来了解谁创建了一个目录。
当我尝试:
git blame DIRECTORY_NAME
我明白了:
fatal: no such path DIRECTORY_NAME in HEAD
顺便提一下,该目录为空。有什么建议吗?
答案 0 :(得分:14)
尝试仅获取该目录的日志,并使用-p选项查看发生的确切更改。
$ git log -p <path to directory>
这仍然可能无法告诉你究竟是谁创建了目录,因为git似乎更关注文件内容,但是你可能会从第一次添加任何内容时看到一些有用的线索。
答案 1 :(得分:2)
到git blame
当前目录:
git ls-files -z | xargs -0n1 git blame
我从这里改编了以上内容:https://gist.github.com/Alpha59/4e9cd6c65f7aa2711b79
一个非常慢的单行代码,经历了git的责备,看到每个作者贡献了多少行。
似乎我需要至少按一次空格键和Q才能完全滚动列表。
答案 2 :(得分:1)
我创建了一个小函数,该函数遍历所有文件并使目录责备视图类似于GitHub。
输出格式为:
FILENAME COMMIT-HASH Commit-DATE AUTHOR COMMIT-MESSAGE
看起来像这样
myfile1 abceeee 2019-04-23 19:26 Radon8472 Added file example
readme.md abd0000 2019-04-24 19:30 Radon8472 Update Readme-File
blamedir()
{
FILE_W=35;
BLAME_FORMAT="%C(auto) %h %ad %C(dim white)%an %C(auto)%s";
for f in $1*;
do
git log -n 1 --pretty=format:"$(printf "%-*s" $FILE_W "$f") $BLAME_FORMAT" -- $f;
done;
};
用法示例:
blamedir
类似于blamedir ./
blamedir DIRECTORY_NAME/
可以通过更改函数中的变量BLAME_FORMAT
来随意更改显示格式。
我认为也可以将此功能设置为git-alias。