Cuando ejecuto 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 comprometidas.
Probé esto en muchos archivos, que tienen muchas confirmaciones, siempre los mismos resultados. También intenté usar la ruta relativa / completa, pero parece que no hay diferencia.
Cuando trato de usar la culpa de TortoiseGit, siempre muestra que cada línea se comprometió por última vez en la primera confirmación:
incluso aunque, como he dicho, hay decenas de confirmaciones en el historial de estos archivos ...
Ideas?
Editar - Más información
- La culpa de Git funciona bien en GitHub, donde se aloja este repositorio.
- También funciona bien si lo clono en una máquina Linux y hago la culpa allí
- Parece que solo en msysgit esto no funciona
git
windows-subsystem-for-linux
msysgit
blame
Assaf Lavie
fuente
fuente
Respuestas:
git blame file.txt
culpa a la versión de file.txt en su copia de trabajo. Si file.txt tiene Windows-newlines (CRLF) en el repositorio y usted lo tienecore.autocrlf = true
, entonces cada línea de file.txt se considerará diferente y se informarágit blame
que aún no se ha confirmado.La razón por la que
git blame <my_branch>
(o mejor aúngit blame HEAD
, lo que funciona sin importar en qué rama se encuentre) funciona es que no culpa a la versión de la copia de trabajo, por lo que no hay posibilidad de que las líneas aún no se hayan comprometido.fuente
git blame -w
ignora el espacio en blanco, por lo que aún puede culpar a la copia de trabajo si lo deseaEncontré la solución, muy extraña.
Si ejecuto esto:
La historia está rota, como se publicó anteriormente.
Si hago esto en su lugar:
¡Funciona!
Esto es muy extraño, porque AFAICS el uso no requiere un nombre de rama:
fuente
git blame mybranch cmakelists.txt
y fallará; pero si lo escribogit blame mybranch CMakeLists.txt
funcionará.A partir de git 2.0.1 (25 de junio de 2014), git blame debería dejar de informar todas esas líneas "Aún no comprometido".
Consulte la confirmación 4d4813a (26 de abril de 2014) de brian m. carlson (
bk2204
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso e934c67 , 06 de junio de 2014)fuente
git config -l
salida (y un enlace a esta respuesta): eso nos permitirá a mí y a otros intentar y ver si el problema persiste.Otra posibilidad: error tipográfico en el nombre de archivo que distingue entre mayúsculas y minúsculas
Tuve el mismo problema con git blame file.txt, luego me di cuenta de que había cometido un error tipográfico en el nombre de archivo que distingue entre mayúsculas y minúsculas con file.txt
Lo cambié a File.txt (por ejemplo) y obtuve los resultados esperados sin tener que especificar my_branch: git blame File.txt
fuente