git log输出就像svn ls -v一样

时间:2009-01-22 05:08:19

标签: svn git

有没有办法让git给我输出像svn ls -v一样。基本上是每个文件的列表以及最后编辑该文件的人?像这样:

filea.txt     Someone Else
fileb.txt     Another Person

甚至可以使用SHA来识别发生更改的提交?

3 个答案:

答案 0 :(得分:9)

在git中提问并不是一个非常自然的问题,但你可以用这样的东西来实现你想要的东西。

for a in $(ls); do git log --pretty=format:"%h%x09%an%x09%ad%x09$a" -1 -- "$a"; done

这将遍历当前目录中的每个文件,并在其上执行git log以查找最后一次影响它的提交。

效率不高,因为它会搜索每个文件的git历史记录,并且不会重复使用以前搜索的结果。然而,它是一个单行。

答案 1 :(得分:7)

您想要使用git log及其漂亮的格式。这是一个没有完全解决你想要的问题的例子,但是应该让你顺利:

git log --pretty=format:"%h: %s -- %an"

打印:

...
58a2e46: Added readme for github. -- DylanFM
...

答案 2 :(得分:2)

问题是:你为什么需要它?目前git缺少单个命令,它会做“svn ls -v”等价,你必须做一些脚本编写:“git log -1 - $ filename”这个想法,我认为是最简单的解决方案(用期限)要编写的脚本行数);如果它会,它可能会像“git blame”。

但我想有另外一种方法来解决您使用“svn ls -v”解决的问题。

还请记住,对于非线性历史记录,上次更改文件的概念并不明确。