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