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 винить, он всегда показывает каждую линию как последний совершил на первом совершают:

даже думал, как я уже сказал, есть на самом деле десятки коммитов в истории этих файлов..
идеи?
Edit-More Info
- git blame отлично работает на GitHub, где размещается это РЕПО.
- он также отлично работает, если я клонирую его на машину linux и делаю вину там
- кажется, что только на msysgit это не работает
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