【发布时间】:2010-10-02 20:35:48
【问题描述】:
有没有办法让 git 像 svn ls -v 那样给我输出。基本上是每个文件的列表以及最后一次编辑该文件的人?像这样:
filea.txt Someone Else
fileb.txt Another Person
也许即使使用 SHA 来识别更改发生的提交?
【问题讨论】:
-
太紧了,不知什么原因我不知道 svn ls,谢谢
有没有办法让 git 像 svn ls -v 那样给我输出。基本上是每个文件的列表以及最后一次编辑该文件的人?像这样:
filea.txt Someone Else
fileb.txt Another Person
也许即使使用 SHA 来识别更改发生的提交?
【问题讨论】:
在 git 中问这个问题不是很自然,但你可以通过这样的方式实现你想要的。
for a in $(ls); do git log --pretty=format:"%h%x09%an%x09%ad%x09$a" -1 -- "$a"; done
这会遍历当前目录中的每个文件并对其执行git log 以查找影响它的最后一次提交。
它不是很有效,因为它搜索每个文件的 git 历史记录,并且不努力重用以前搜索的结果。但是,它是单行的。
【讨论】:
您想玩转git log 及其漂亮的格式。这是一个示例,它并不能完全满足您的需求,但应该可以帮助您:
git log --pretty=format:"%h: %s -- %an"
打印:
...
58a2e46: Added readme for github. -- DylanFM
...
【讨论】:
问题是:为什么需要它?目前 git 缺少可以执行“svn ls -v”等效的单个命令,并且您必须编写一些脚本:我认为“git log -1 -- $filename”的想法是最简单的解决方案(术语要编写的脚本行数);如果是的话,它可能会是“git blame”。
但我想还有其他方法可以解决您使用“svn ls -v”解决的问题。
还请记住,对于非线性历史,上次更改文件的人这一概念并不明确。
【讨论】: