Когда я запускаю 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 вину, он всегда показывает каждую строку как последнюю зафиксированную при первой фиксации:
даже подумал, как я уже сказал, на самом деле в истории этих файлов есть десятки коммитов ..
Идеи?
Изменить - Дополнительная информация
- Git blame отлично работает на GitHub, где размещено это репо.
- Он также отлично работает, если я клонирую его на Linux-машину и виню там
- Кажется, что только на msysgit это не работает
git
windows-subsystem-for-linux
msysgit
blame
Ассаф Лави
источник
источник
Ответы:
git blame file.txt
винит версию file.txt в вашей рабочей копии. Если file.txt имеет Windows-newlines (CRLF) в репо, а у вас естьcore.autocrlf = true
, то каждая строка file.txt будет считаться другой и будет сообщатьсяgit blame
как еще не зафиксированная.Причина, по которой
git blame <my_branch>
(или даже лучшеgit blame HEAD
, которая работает независимо от того, в какой ветке вы находитесь) работает, заключается в том, что она не винит версию рабочей копии, поэтому нет возможности для строк, которые еще не зафиксированы.источник
git blame -w
игнорирует пробелы, поэтому при желании вы все равно можете обвинить рабочую копиюНашел решение - очень странно.
Если я запустил это:
История нарушена, как написано выше.
Если я сделаю это вместо этого:
Оно работает!
Это очень странно, потому что для использования AFAICS не требуется имя ветки:
источник
git blame mybranch cmakelists.txt
и это не удастся; но если я напишу,git blame mybranch CMakeLists.txt
будет работать.Начиная с git 2.0.1 (25 июня 2014 г.), git blame должен прекратить сообщать обо всех этих строках «Еще не выполнено».
См. Commit 4d4813a (26 апреля 2014 г.), автор: brian m. Карлсон (
bk2204
) .(Объединено Junio C Hamano -
gitster
- в коммите e934c67 , 06 июня 2014 г.)источник
git config -l
выводом (и ссылкой на этот ответ): это позволит мне и другим попытаться проверить, сохраняется ли проблема.Другая возможность: опечатка имени файла с учетом регистра
У меня была такая же проблема с git blame file.txt, затем я понял, что сделал опечатку с учетом регистра в имени файла с file.txt
Изменил его на File.txt (например), и я получил ожидаемые результаты без необходимости указывать my_branch: git blame File.txt
источник