Tenga en cuenta que en la historia de Git, los cambios de nombre de archivo son no almacenados como "esto se renombró de X a Y". En cambio, el archivo X existe en una revisión, y en la siguiente revisión Y existe (y X no). Por ejemplo:
Revision | Files
---------+----------------------------------
HEAD^ | a.cpp x.cpp z.cpp
HEAD | a.cpp y.cpp z.cpp
En el diagrama anterior, cada revisión es una fila y cada una contiene tres archivos. Entre las dos revisiones, x.cpp
se renombró a y.cpp
. La única información que almacena el repositorio es el contenido de cada revisión por separado.
Cuando Git (u otra herramienta que lea los repositorios de Git) mira el historial anterior, nota que y.cpp
es un archivo nuevo en HEAD
. Luego mira la revisión anterior para ver si existía un archivo similar. En el caso de un cambio de nombre de archivo directo, entonces sí, un archivo llamado x.cpp
con los mismos contenidos existía en la revisión anterior (y ya no existe en la revisión actual). Entonces, el nuevo archivo se muestra como un cambio de nombre de x.cpp
a y.cpp
.
En el caso de un cambio de nombre y modificación, Git mirará los archivos de la revisión anterior para ver si un archivo se ve cerca del nuevo archivo (en términos de su contenido). Aquí es donde entra la heurística. Si la mayoría de las líneas son iguales, entonces Git lo mostrará como un cambio de nombre, pero si hay suficientes líneas cambiadas en comparación con las líneas sin cambios, entonces Git simplemente dirá que se ve como un archivo nuevo.
Para responder a su pregunta, la mejor manera de manejar los cambios de clase de la clase resharper es simplemente hacerlo y confirmar los nuevos archivos. Git almacena los archivos antiguos y nuevos en su repositorio. La detección de cambio de nombre se maneja más tarde, en el momento en que realmente preguntas sobre el historial. Es por eso que comandos como git log
tienen opciones como --find-copies
y --find-copies-harder
.
Git no realiza un seguimiento de los cambios de nombre explícitamente. Se infiere sobre la marcha, por lo que no hay forma de que Git trate algo así como un cambio de nombre si no puede detectarlo. – hammar