Git обвинение, не показывающее истории

Когда я запускаю git вину в файле (используя msysgit), я всегда получаю следующий вид распечатки:

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

то есть. он показывает все строки, которые еще не совершены.

Я пробовал это во многих файлах, которые имеют много коммитов - всегда одни и те же результаты. Я также пытался использовать относительный/полный путь, но, похоже, не имеет значения.

Когда я пытаюсь использовать вину TortoiseGit, она всегда показывает каждую строку как последнюю, зафиксированную при первом фиксации:

alt text

даже мысль, как я уже сказал, в истории этих файлов на самом деле десятки коммитов.

Идеи?

Изменить - Дополнительная информация

  • Git винить отлично работает на GitHub, где размещено это репо.
  • Он также отлично работает, если я клонирую его на машину linux и выполняю вину там
  • Кажется, что только на msysgit это не работает

Ответ 1

git blame file.txt обвиняет версию file.txt в вашей рабочей копии. Если в репозитории file.txt есть строки Windows-newlines (CRLF), и у вас есть core.autocrlf = true, то каждая строка файла .txt будет считаться разной и будет сообщена git blame как еще не зафиксирована.

Причина, по которой git blame <my_branch> (или даже лучше git blame HEAD, которая работает независимо от того, с какой веткой вы работаете) заключается в том, что она не винит версию рабочей копии, поэтому нет возможности для строк, еще не являющихся совершенные.

Ответ 2

Нашел решение - очень странно.

Если я запустил это:

git blame file.txt

История сломана, как указано выше.

Если я сделаю это вместо:

git blame my_branch file.txt

Это работает!

Это очень странно, потому что AFAICS для использования не требуется имя ветки:

$ git blame
usage: git blame [options] [rev-opts] [rev] [--] file

Ответ 3

Начиная с git 2.0.1 (25 июня 2014 г.), git blame должен прекратить сообщать обо всех этих строках "Пока не совершено".

Смотрите коммит 4d4813a (26 апреля 2014 г.) от brian m. Карлсон (bk2204).
(Объединено Junio C Hamano - gitster - в коммите e934c67, 06 июня 2014 г.)

blame: правильно обрабатывать файлы независимо от autocrlf

Если файл содержит окончания строк CRLF в репозитории с core.autocrlf=input, то винит всегда помеченные строки как " Not Committed Yet ", даже если они не были изменены.
Не пытайтесь преобразовать окончания строк при создании поддельного коммита, чтобы обвинение autocrlf правильно, независимо от настройки autocrlf.

Ответ 4

Другая возможность: опечатка с регистрами с учетом регистра

У меня была та же проблема с git blame file.txt, а затем поняли, что я сделал одинаковую имя файла с файлом file.txt

Изменен файл File.txt(например), и я получил ожидаемые результаты без указания my_branch: git blame File.txt