Ho rinominato un paio di file usando git mv
, usato git stash
, ho dato una rapida occhiata a HEAD (senza cambiarlo) e poi l'ho fatto git stash pop
per recuperare l'intero lotto. Le mie mosse erano scomparse dall'elenco dei commit, quindi le ho ripetute con git rm
e il messaggio di commit ha affermato che git aveva notato che la ridenominazione era una rinomina. Quindi non ci ho più pensato.
Ma ora, dopo il commit, non riesco ad accedere alla cronologia dei file spostati! Ecco cosa dice git del commit in questione:
~/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%
Ora sto cercando di ottenere la cronologia di uno di questi file spostati, quindi posso guardare una vecchia versione, ma non ottengo nulla di molto 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%
(L'ho provato anche senza -M
, -C
e --find-copies-harder
, ma senza alcun risultato.)
Posso ottenere la sua cronologia con il suo vecchio nome, che si ferma nel punto in cui è stato cancellato dalla vecchia posizione:
~/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%
Quindi questa volta non sono completamente bloccato, ma non mi piacerebbe dover fare questo genere di cose tutto il tempo. (Prevedo di avere un discreto numero di file che verranno spostati almeno una volta nella vita.)
Sto facendo qualcosa di sbagliato? La vecchia copia del file e la nuova copia sono identiche al 98,8% (2 righe su 166 modificate). La mia comprensione è che git dovrebbe essere in grado di tenere traccia del file in questo caso, perché deduce le operazioni di rinomina piuttosto che memorizzarle esplicitamente, ei file sono abbastanza simili da ritenere che dovrebbe considerarli uguali.
C'è qualcosa che posso fare per risolvere questo problema?