如何git责备一个目录

时间:2015-12-14 05:14:35

标签: git

我想知道如何使用git blame来了解谁创建了一个目录。

当我尝试:

git blame DIRECTORY_NAME

我明白了:

fatal: no such path DIRECTORY_NAME in HEAD

顺便提一下,该目录为空。有什么建议吗?

3 个答案:

答案 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。