如何git责备一个目录

Sun*_*Cho 18 git

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

当我尝试:

git blame DIRECTORY_NAME
Run Code Online (Sandbox Code Playgroud)

我明白了:

fatal: no such path DIRECTORY_NAME in HEAD
Run Code Online (Sandbox Code Playgroud)

顺便说一下,目录是空的.有什么建议?

Jon*_*ter 16

尝试获取该目录的日志,并使用-p选项查看发生的确切更改.

$ git log -p <path to directory>
Run Code Online (Sandbox Code Playgroud)

这仍然可能无法告诉您究竟是谁创建了目录,因为git似乎更关注文件内容,但您可能会从第一次添加任何内容时看到一些有用的线索.


Pur*_*ket 8

git blame当前目录:

git ls-files -z | xargs -0n1 git blame
Run Code Online (Sandbox Code Playgroud)

我从这里改编了上面的内容:https ://gist.github.com/Alpha59/4e9cd6c65f7aa2711b79

一个非常非常慢的单行代码,它会通过 gitblame 并查看每个作者贡献了多少行。

看来我需要按空格键和 Q 至少一次才能完全滚动列表。


Rad*_*472 6

我创建了一个小函数,它循环遍历所有文件并创建类似于 GitHub 的目录责任视图。

输出格式为:

 FILENAME      COMMIT-HASH  Commit-DATE  AUTHOR  COMMIT-MESSAGE
Run Code Online (Sandbox Code Playgroud)

看起来像这样

 myfile1    abceeee 2019-04-23 19:26  Radon8472  Added file example
 readme.md  abd0000 2019-04-24 19:30  Radon8472  Update Readme-File
Run Code Online (Sandbox Code Playgroud)
 FILENAME      COMMIT-HASH  Commit-DATE  AUTHOR  COMMIT-MESSAGE
Run Code Online (Sandbox Code Playgroud)

用法示例:

  • blamedir类似的blamedir ./
  • blamedir DIRECTORY_NAME/

BLAME_FORMAT您可以通过更改函数中的变量来随意更改显示格式。

我认为也应该可以将此函数设置为 git-alias 。