Renomeei alguns arquivos usando git mv
, usei git stash
, dei uma olhada rápida em HEAD (sem alterá-lo) e, em seguida, fiz git stash pop
para obter o lote inteiro de volta. Meus movimentos haviam desaparecido da lista de commits, então eu os refiz com git rm
e a mensagem de commit afirmava que git havia visto que a renomeação era uma renomeação. Então, não pensei mais nisso.
Mas agora, pós-commit, não consigo acessar o histórico dos arquivos movidos! Aqui está o que o git diz sobre o commit em questão:
~/projects% git log --summary
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
delete mode 100644 test/R_DebugUI_iOS.h
delete mode 100644 test/R_DebugUI_iOS.m
create mode 100644 system/runtime/src/R_DebugUI_iOS.h
create mode 100644 system/runtime/src/R_DebugUI_iOS.m
<<snip older commits>>
~/projects%
Agora estou tentando obter o histórico de um desses arquivos movidos, para que possa olhar para uma versão antiga, mas não consigo nada muito útil:
~/projects/system/runtime/src% git log --follow --find-copies-harder -M -C R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
~/projects/system/runtime/src%
(Eu também tentei sem -M
, -C
e --find-copies-harder
, mas sem sucesso.)
Posso colocar o histórico com o nome antigo, que para no ponto em que foi excluído do local antigo:
~/projects% git log --summary --follow --find-copies-harder -M -C -- test/R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
delete mode 100644 test/R_DebugUI_iOS.m
commit 32a22d53c27e260714f759ecb3d3864e38b2e87f
Author: brone
Date: Tue Dec 7 23:52:51 2010 +0000
Can set debug UI's alpha.
<<snip older commits>>
~/projects%
Portanto, não estou completamente preso desta vez, mas não gostaria de ter que fazer esse tipo de coisa o tempo todo. (Prevejo ter um bom número de arquivos que serão movidos pelo menos uma vez na vida.)
Estou fazendo algo errado? A cópia antiga do arquivo e a nova cópia são 98,8% iguais (2 linhas de 166 alteradas). Meu entendimento é que o git deve ser capaz de rastrear o arquivo neste caso, porque infere operações de renomeação em vez de armazená-los explicitamente, e os arquivos são semelhantes o suficiente para que eu acredite que deva considerá-los iguais.
Posso fazer alguma coisa para consertar isso?