J'ai renommé quelques fichiers en utilisant git mv
, utilisé git stash
, jeté un coup d'œil rapide à HEAD (sans le changer) puis je l'ai fait git stash pop
pour récupérer le tout. Mes coups avaient disparu de la liste de commit, donc je les ai refaits avec git rm
et le message de commit prétendu que git avait repéré que le changement de nom était un renommage. Alors je n'y ai plus pensé.
Mais maintenant, après la validation, je ne peux pas accéder à l'historique des fichiers déplacés! Voici ce que dit git à propos du commit en question:
~/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%
J'essaie maintenant d'obtenir l'historique de l'un de ces fichiers déplacés, afin de pouvoir consulter une ancienne version, mais je n'obtiens rien de très utile:
~/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%
(Je l' ai aussi essayé sans -M
, -C
et --find-copies-harder
, mais en vain.)
Je peux obtenir son historique sous son ancien nom, qui s'arrête au moment où il a été supprimé de son ancien emplacement:
~/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%
Je ne suis donc pas complètement coincé cette fois, mais je n'aurais pas envie de faire ce genre de chose tout le temps. (Je prévois avoir un bon nombre de fichiers qui seront déplacés au moins une fois dans leur vie.)
Est-ce que je fais quelque chose de mal? L'ancienne copie du fichier et la nouvelle copie sont identiques à 98,8% (2 lignes sur 166 modifiées). Je crois comprendre que git devrait être capable de suivre le fichier dans ce cas, car il en déduit les opérations de changement de nom plutôt que de les stocker explicitement, et les fichiers sont suffisamment similaires pour que je pense qu'il devrait les considérer comme identiques.
Puis-je faire quelque chose pour résoudre ce problème?