Git责备没有历史
当我在一个文件(使用msysgit)上运行git blame的时候,我总是得到如下的打印输出:
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 1) package co 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 2) { 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 3) impor 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 4) impor 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 5) impor 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 6) impor 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 7) impor
即它将所有行显示为Not Yet Committed。
我在很多文件上试过这个,有很多提交 – 总是相同的结果。 我也尝试使用相对/完整path,但似乎没有任何区别。
当我尝试使用TortoiseGit的责任时,它总是显示每一行是在第一次提交时最后提交的:
甚至认为,正如我所说,这些文件的历史实际上有几十个提交。
想法?
编辑 – 更多信息
- Git责怪GitHub,这个回购托pipe的地方工作正常。
- 如果我把它克隆到一台linux机器上,那么它也可以正常工作,并在那里进行指责
- 似乎只有在msysgit这不起作用
git blame file.txt
指责你的工作副本中的file.txt版本。 如果file.txt在repo中有Windows-newlines(CRLF),并且你有core.autocrlf = true
,那么file.txt的每一行都会被认为是不同的,并且会被git blame
报告为尚未提交。
git blame <my_branch>
(或者甚至更好的git blame HEAD
,无论你在哪个分支上都可以工作)的原因是,它不会责怪工作拷贝版本,所以没有潜在的线路还没有被提交。
find解决scheme – 非常奇怪。
如果我运行这个:
git blame file.txt
如上所述,历史被打破。
如果我这样做:
git blame my_branch file.txt
有用!
这非常奇怪,因为AFAICS的用法不需要分支名称:
$ git blame usage: git blame [options] [rev-opts] [rev] [--] file
从git 2.0.1开始(2014年6月25日),git blame应该停止报告所有那些“Not Yet Committed”行。
见brian m 提交4d4813a 。 卡尔森( bk2204
) (2014年4月):
怪:无论autocrlf
如何正确处理文件
如果在
core.autocrlf=input
的存储库中包含CRLF行结尾,则总是将行标记为“Not Committed Yet
”,即使它们未经修改。
不要在创build虚假提交时尝试转换行尾,以便不pipeautocrlf设置如何都能正常工作。
另一种可能性:区分大小写的文件名错字
我有同样的问题与git责备file.txt,然后意识到,我已经做了一个区分大小写文件错字与file.txt
更改为File.txt(例如),我得到了预期的结果W / O不得不指定my_branch:git blame File.txt