Leí que al cambiar el nombre de los archivos en git , debe confirmar cualquier cambio, realizar su cambio de nombre y luego organizar su archivo renombrado. Git reconocerá el archivo por el contenido, en lugar de verlo como un nuevo archivo sin seguimiento, y mantendrá el historial de cambios.
Sin embargo, haciendo esto esta noche, terminé volviendo a hacerlo git mv
.
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
Cambiar el nombre de mi hoja de estilo en Finder de iphone.css
amobile.css
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: css/iphone.css
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# css/mobile.css
Entonces git ahora piensa que eliminé un archivo CSS y agregué uno nuevo. No es lo que quiero, deshaga el cambio de nombre y deje que git haga el trabajo.
> $ git reset HEAD .
Unstaged changes after reset:
M css/iphone.css
M index.html
De vuelta a donde empecé.
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
Vamos a usar git mv
en su lugar.
> $ git mv css/iphone.css css/mobile.css
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: css/iphone.css -> css/mobile.css
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.html
#
Parece que estamos bien. Entonces, ¿por qué git no reconoció el cambio de nombre la primera vez cuando usé Finder?
git mv old new
Actualiza automáticamente el índice. Cuando cambie el nombre fuera de Git, tendrá que hacer git add new
y git rm old
organizar los cambios en el índice. Una vez que haya hecho esto git status
, funcionará como espera.
public_html
directorio, que se rastrean en git. Habiendo realizado git add .
y git commit
, todavía mostraba un montón de archivos 'eliminados' git status
. Realicé una git commit -a
y las eliminaciones se confirmaron, pero ahora no tengo historial en los archivos que viven public_html
ahora. Este flujo de trabajo no es tan suave como me gustaría.
add+rm
omv
bien, produce el mismo resultado. Git luego usa su detección de cambio de nombre / copia para hacerle saber que fue un cambio de nombre. La fuente que citó también es inexacta. Realmente no importa si modifica + renombra en la misma confirmación o no. Cuando realiza una diferencia entre la modificación y el cambio de nombre, la detección de cambio de nombre lo verá como un cambio de nombre + modificación, o si la modificación es una reescritura total, se mostrará como agregado y eliminado, pero no importa cómo lo haya realizado. eso.