Quando executo git blame em um arquivo (usando msysgit), sempre recebo o seguinte tipo de impressão:
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
ou seja, mostra todas as linhas como Ainda não confirmadas.
Eu tentei isso em muitos arquivos, que têm muitos commits - sempre os mesmos resultados. Eu também tentei usar o caminho relativo / completo, mas parece não fazer diferença.
Quando tento usar a culpa do TortoiseGit, ele sempre mostra cada linha como sendo a última cometida no primeiro commit:
até pensei, como eu disse, na verdade existem dezenas de commits no histórico desses arquivos.
Ideias?
Editar - Mais informações
- Git blame funciona bem no GitHub, onde este repo está hospedado.
- Também funciona bem se eu clonar em uma máquina Linux e colocar a culpa lá
- Parece que apenas no msysgit isso não funciona
git
windows-subsystem-for-linux
msysgit
blame
Assaf Lavie
fonte
fonte
Respostas:
git blame file.txt
culpa a versão do arquivo.txt em sua cópia de trabalho. Se file.txt tiver Windows-newlines (CRLF) no repo e você tivercore.autocrlf = true
, então cada linha de file.txt será considerada diferente e será relatada porgit blame
como ainda não confirmada.A razão pela qual
git blame <my_branch>
(ou melhor aindagit blame HEAD
, que funciona independentemente do branch em que você está) funciona, é que ele não culpa a versão da cópia de trabalho, então não há potencial para linhas ainda não terem sido confirmadas.fonte
git blame -w
ignora o espaço em branco, então você ainda pode culpar a cópia de trabalho, se desejarEncontrei a solução - muito estranho.
Se eu executar este:
A história está quebrada, como postado acima.
Se eu fizer isso em vez disso:
Funciona!
Isso é muito estranho, porque AFAICS o uso não requer um nome de branch:
fonte
git blame mybranch cmakelists.txt
e falhará; mas se eu escrevergit blame mybranch CMakeLists.txt
vai funcionar.A partir do git 2.0.1 (25 de junho de 2014), o git blame deve parar de relatar todas as linhas "Ainda não confirmado".
Veja commit 4d4813a (26 abr 2014) por brian m. Carlson (
bk2204
) .(Incorporado por Junio C Hamano -
gitster
- no commit e934c67 , 06 de junho de 2014)fonte
git config -l
saída (e um link de volta para esta resposta): isso permitirá que eu e outras pessoas tentemos e ver se o problema persiste.Outra possibilidade: erro de digitação de nome de arquivo que diferencia maiúsculas de minúsculas
Tive o mesmo problema com git blame file.txt, mas então percebi que cometi um erro de digitação que diferencia maiúsculas de minúsculas com file.txt
Alterei para File.txt (por exemplo), e obtive os resultados esperados sem ter que especificar my_branch: git blame File.txt
fonte