Git blame не показывает истории



когда я запускаю git blame на файл (используя 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



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



идеи?



Edit-More Info




  • git blame отлично работает на GitHub, где размещается это РЕПО.

  • он также отлично работает, если я клонирую его на машину linux и делаю вину там

  • кажется, что только на msysgit это не работает

522   4  

4 ответов:

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

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

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

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

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 (25 июня 2014 года), git blame должен прекратить сообщать обо всех этих "еще не совершенных" строках.

посмотреть commit 4d4813a by Брайан м. Карлсон (bk2204) (апрель 2014 г.):

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

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

еще одна возможность: с учетом регистра имя файла опечатка

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

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

Comments

    Ничего не найдено.