有一次,我的git存储库重新组织了它的路径.
我经常想在移动前对修订版的文件负责.
什么是git责备咒语责备当前存储库中不存在的文件?
我试过了:
> git blame new/path/to/file old_rev
fatal: no such path ... in old_rev
> git blame old/path/to/file old_rev
fatal: cannot stat path ... in old_rev
> git blame old_rev:old/path/to/file old_rev
fatal: cannot stat path ... in old_rev
Run Code Online (Sandbox Code Playgroud)
显然,我可以查看old_rev并指责相应的路径,但我宁愿避免这种情况.
作为一个以前的bzr用户和新手,git我正在努力寻找git blame类似的好GUI工具bzr qannotate.后者有两个主要观点:
截图:

我看到XCode IDE有类似内置的内容,虽然它在编辑器窗口内,因此不是很方便.
到目前为止,我已经尝试过GitX 0.7.1和Mac的GitHub - 他们都没有"责怪".
我刚刚检查了SourceTree for Mac,虽然它有责备支持,但它相当简陋,并且显示我几乎与命令行相同git blame,尽管我可以双击该行以查看相应的修订和另一个窗口中的更改.那仍然不如bzr qannotate.
我可以使用其他GUI工具吗?
cloc 使每个类型的每种语言(空白,注释或代码)能够计算存储在目录中的代码行数.
git blame 使人能够看到文件的哪个部分属于谁.
我正在寻找一种结合两者的方法,以便获得一个(三维)矩阵,列出每个用户每种语言的每种类型的代码行.
是否有优雅内置的方式来做到这一点还是应该一个"报废"的"怪"的部分(运行grep后git blame)每个用户的,并运行cloc它们来计算表中的每个用户?
编辑:
天真的方法(基于@Jubobs的评论):
grep "^[^(]*([^)]*)"捕捉到所有用户的列表,并与检索唯一身份sort和uniq.grep "^[^(]*($user)"使得仅保留该用户的行.这或多或少是如何生成所需的输出.但是正如人们所看到的,这种方法进行了大量的复制(或至少存储在内存中),并且实际上可以通过在文件上运行一次而不是多次来计算每个用户的行数.
期望的输出:
就像是:
+--------+--------------------------------+--------------------------------+
|User | C# | XML |
+--------+-------+-------+---------+------+-------+-------+---------+------+
| | files | blank | comment | code | files | blank | comment | code |
+--------+-------+-------+---------+------+-------+-------+---------+------+
| Foo | 12 | 75 | 148 | 2711 | 2 | 42 | 0 | …Run Code Online (Sandbox Code Playgroud) 我有一些代码,我希望看到修订历史记录.在示例文件中,第300行包含"有趣"的内容.如何使用svn查看该行何时更改,并查看与该行更改有关的svn注释.(请注意,该文件的先前版本可能不会在第300行具有我的目标兴趣线).
在我的服务器上,我托管我的个人git远程端项目(带gitosis),我已经构建了一个Web界面来浏览存储库(类似于Github).
在远程端,你不允许做很多事情,因为缺少一个工作树,这是正确的:顺便说一下,对于一个存储库资源管理器,几乎没有命令我可以做几乎所有事情.
除了git责备.
在远程端存储库中,我无法找到如何在没有工作树的情况下归咎于文件.你有什么想法吗?
我如何在git中确定仍然存在的来自特定作者的所有行.比方说,Tony已经参与了我的项目,我想找到我的开发分支中仍然存在的所有行,并且来自Tony撰写的提交?
假设我有一个文件A.cpp,我注意到该文件的第15行有错误.假设错误是函数上的"const",它返回一个指向成员变量的指针,这意味着在函数上使用const在技术上是正确的但在语义上是错误的.我想与作出改变的作者讨论语义.
使用git,有没有办法找出引入"const"令牌的修订版?更具体地说,我想知道谁引入了令牌.
"git blame"显示谁对该行进行了最后一次更改,但我实际上希望找到包含该令牌的第一个提交.
如果一行在两个版本之间来回多次修改,git blame似乎只显示该行的最新提交.
是否可以让它显示该行的所有提交?
实际上,我试图获得有关合并冲突的报告.我使用'git blame'来查看谁更改了哪一行,但我找不到分支和存储库名称信息.
有没有办法从'git blame'或commit ids'中找到文件的存储库名称,分支名称和作者名称,这样每当发生合并冲突时,我都可以向触及该文件/行的作者发送电子邮件解决它.
部分输出来自git blame <file>:
...
d6182477 (<author> 2012-06-22 09:44:02 -0400 239) ...
d6182477 (<author> 2012-06-22 09:44:02 -0400 240) ...
25f98f3f (<author> 2012-06-15 15:44:00 -0400 245) ...
25f98f3f (<author> 2012-06-15 15:44:00 -0400 246) ...
35853aa2 (<author> 2012-06-22 08:12:41 -0400 247) ...
25f98f3f (<author> 2012-06-15 15:44:00 -0400 248) ...
-> 00000000 (Not Committed Yet 2012-06-27 08:33:35 -0400 249) ...
-> 00000000 (Not Committed Yet 2012-06-27 08:33:35 -0400 249) ...
25f98f3f (<author> 2012-06-15 15:44:00 -0400 250) ...
35853aa2 (<author> 2012-06-22 08:12:41 -0400 …Run Code Online (Sandbox Code Playgroud)