Eliminar Archivos
Para eliminar archivos de Git, debes eliminarlos de tus archivos
rastreados (o mejor dicho, eliminarlos del área de preparación) y luego
confirmar.
Para ello existe el comando
git rm
, que además elimina el
archivo de tu directorio de trabajo de manera que no aparezca la próxima
vez como un archivo no rastreado.
Si simplemente eliminas el archivo de tu directorio de trabajo,
aparecerá en la sección “Changes not staged for commit” (esto es, sin preparar) en la salida de
git status
:$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: PROJECTS.md
no changes added to commit (use "git add" and/or "git commit -a")
Ahora, si ejecutas
git rm
, entonces se prepara la eliminación del archivo:$ git rm PROJECTS.md
rm 'PROJECTS.md'
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: PROJECTS.md
Con la próxima confirmación, el archivo habrá desaparecido y no volverá a ser rastreado.
Si modificaste el archivo y ya lo habías añadido al índice, tendrás que forzar su eliminación con la opción
-f
.
Esta propiedad existe por seguridad, para prevenir que elimines
accidentalmente datos que aun no han sido guardados como una instantánea
y que por lo tanto no podrás recuperar luego con Git.
Otra cosa que puedas querer hacer es mantener el archivo en tu directorio de trabajo pero eliminarlo del área de preparación.
En otras palabras, quisieras mantener el archivo en tu disco duro pero sin que Git lo siga rastreando.
Esto puede ser particularmente útil si olvidaste añadir algo en tu archivo
.gitignore
y lo preparaste accidentalmente, algo como un gran archivo de trazas a un montón de archivos compilados .a
.
Para hacerlo, utiliza la opción --cached
:$ git rm --cached README
Al comando
git rm
puedes pasarle archivos, directorios y patrones glob.
Lo que significa que puedes hacer cosas como$ git rm log/\*.log
Fíjate en la barra invertida (
\
) antes del asterisco *
.
Esto es necesario porque Git hace su propia expansión de nombres de archivo, aparte de la expansión hecha por tu terminal.
Este comando elimina todos los archivo que tengan la extensión .log
dentro del directorio log/
.
O también puedes hacer algo como:$ git rm \*~
Este comando elimina todos los archivos que acaben con
~
.Cambiar el Nombre de los Archivos
Al contrario que muchos sistemas VCS, Git no rastrea explícitamente los
cambios de nombre en archivos.
Si renombras un archivo en Git, no se guardará ningún metadato que
indique que renombraste el archivo.
Sin embargo, Git es bastante listo como para detectar estos cambios
luego que los has hecho - más adelante, veremos cómo se detecta el
cambio de nombre.
Por esto, resulta confuso que Git tenga un comando
mv
.
Si quieres renombrar un archivo en Git, puedes ejecutar algo como$ git mv file_from file_to
y funcionará bien.
De hecho, si ejecutas algo como eso y ves el estatus, verás que Git lo considera como un renombramiento de archivo:
$ git mv README.md README
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
Sin embargo, eso es equivalente a ejecutar algo como esto:
$ mv README.md README
$ git rm README.md
$ git add README
Git se da cuenta que es un renombramiento implícito, así que no importa
si renombras el archivo de esa manera o a través del comando
mv
.
La única diferencia real es que mv
es un solo comando en
vez de tres - existe por conveniencia.
De hecho, puedes usar la herramienta que quieras para renombrar un
archivo y luego realizar el proceso rm/add antes de confirmar. fuente: https://git-scm.com/book/es/
No hay comentarios:
Publicar un comentario