Git blame no muestra historial
Cuando corro git blame en un archivo (usando msysgit) siempre obtengo el siguiente tipo de impresión:
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
Es decir, muestra todas las líneas como Aún No Confirmadas.
Probé esto en muchos archivos, que tienen muchas confirmaciones - siempre los mismos resultados. También intenté usar el camino relativo / completo, pero parece no hacer ninguna diferencia.
Cuando intento usar la culpa de TortoiseGit, siempre muestra cada línea como la última cometida en la primera commit:
Incluso pensó, como He dicho, en realidad hay decenas de confirmaciones en la historia de estos archivos..
Ideas?
Editar-Más información
- Git blame funciona bien en GitHub, donde se aloja este repositorio.
- También funciona bien si lo clono a una máquina linux y hago la culpa allí
- Parece que solo en msysgit esto no funciona
4 answers
git blame file.txt
culpa a la versión del archivo.txt en su copia de trabajo. Archivo If.txt tiene Windows-newlines (CRLF) en el repositorio y tiene core.autocrlf = true
, luego cada línea de archivo.txt se considerará diferente y será reportado por git blame
como aún no comprometido.
La razón por la que git blame <my_branch>
(o mejor aún git blame HEAD
, que funciona sin importar en qué rama estés) funciona, es que no culpa a la versión de la copia de trabajo, por lo que no hay potencial para que las líneas aún no se confirmen.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-11 12:29:08
Encontró la solución - muy raro.
Si corro esto:
git blame file.txt
La historia está rota, como se publicó anteriormente.
Si hago esto en su lugar:
git blame my_branch file.txt
Funciona!
Esto es muy raro, porque AFAICS el uso no requiere un nombre de rama:
$ git blame
usage: git blame [options] [rev-opts] [rev] [--] file
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-09 10:04:41
A partir de git 2.0.1 (25 de junio de 2014), git blame debería dejar de informar todas las líneas "Aún no confirmadas".
Ver commit 4d4813a por brian m. carlson (bk2204
) (Abril de 2014):
Culpa: manejar correctamente los archivos independientemente de autocrlf
Si un archivo contiene finales de línea CRLF en un repositorio con
core.autocrlf=input
, entonces blame siempre marca las líneas como "Not Committed Yet
", incluso si no fueron modificadas.
No intente convertir las terminaciones de línea al crear el falso cometer para que la culpa funciona correctamente independientemente de la configuración de autocrlf.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-27 08:16:09
Otra posibilidad: error tipográfico de nombre de archivo sensible a mayúsculas y minúsculas
Tuve el mismo problema con git blame file.txt, luego se dio cuenta de que había hecho un error tipográfico de nombre de archivo sensible a mayúsculas y minúsculas con file.txt
Lo cambió a Archivo.txt (por ejemplo), y obtuve los resultados esperados sin tener que especificar my_branch: git blame File.txt
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-21 14:36:58