A medida que su proyecto cambie con el tiempo, es probable que en algún momento deba eliminar un archivo o un directorio completo del repositorio. Dado que esto implica más que cambiar el contenido de un archivo, Git tiene un comando especial para manejar la eliminación de archivos, que también toma algunas banderas importantes según su caso de uso.
En este breve artículo, echaremos un vistazo a git rm
comando y cómo usarlo para eliminar archivos y directorios de su repositorio.
Eliminar un archivo
El uso más simple de este comando es eliminar un solo archivo del repositorio, lo que puede hacer usando la siguiente sintaxis:
$ git rm <filename>
Digamos que tenemos un repositorio de Git con el siguiente contenido:
Te puede interesar:Git: Switch Branch$ git ls-files
.gitignore
index.js
lib/api.js
lib/db.js
package.json
Por alguna razón, supongamos que ya no necesitamos el lib/db.js
archivo. Para eliminarlo de nuestro repositorio, ejecutamos lo siguiente:
$ git rm lib/db.js
rm 'lib/db.js'
Ahora, enumerar nuestros archivos de repositorio nuevamente muestra que se eliminó:
Te puede interesar:Implementación de una aplicación Node.js en Heroku$ git ls-files
.gitignore
index.js
lib/api.js
package.json
Sin embargo, aún no hemos terminado. Si ejecuta el status
, notará que la eliminación del archivo aún está en etapa de preparación y debe confirmarse en el repositorio, al igual que cualquier otro cambio que realice.
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: lib/db.js
$ git commit -m "Removed db.js file"
[master cf191e4] Removed db.js file
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 lib/db.js
Eliminar varios archivos
Eliminar varios archivos de un repositorio es muy similar al caso de uso anterior de eliminar un solo archivo. Dependiendo de su método preferido, hay algunas formas de hacer esto. Por ejemplo, puede simplemente enumerar explícitamente todos los archivos que se eliminarán:
Te puede interesar:Ejecución de comandos de shell con Node.js$ git rm lib/db.js lib/api.js
rm 'lib/api.js'
rm 'lib/db.js'
O, si hay más archivos de los que desea enumerar, siempre puede usar el carácter comodín:
$ git rm lib/*.js
rm 'lib/api.js'
rm 'lib/db.js'
Tenga en cuenta que al eliminar todo el contenido del lib
directorio, Git también eliminará el directorio real. Esto se hace porque Git solo rastrea archivos, no directorios:
$ git ls-files
.gitignore
index.js
package.json
Eliminar un directorio
Para eliminar un directorio completo de su repositorio de Git, todo lo que necesita hacer es eliminar todos los archivos en ese directorio del repositorio. Esto se puede hacer usando uno de los métodos anteriores si no hay muchos archivos, pero en muchos casos esto sería demasiado engorroso. En este caso, la mejor opción sería eliminar de forma recursiva todos los archivos utilizando el -r
bandera.
$ git rm -r <directory>
Para este ejemplo, trabajaremos con nuestro ejemplo anterior y agregaremos algunos archivos más a nuestro lib
directorio:
$ git ls-files
.gitignore
index.js
lib/apis/aws.js
lib/apis/github.js
lib/apis/stripe.js
lib/db.js
package.json
Aquí tenemos archivos y directorios anidados dentro lib
. Para eliminar todo lib
directorio del repositorio por completo, podemos usar el -r
bandera:
$ git rm -r lib
rm 'lib/apis/aws.js'
rm 'lib/apis/github.js'
rm 'lib/apis/stripe.js'
rm 'lib/db.js'
Tenga en cuenta que esto maneja la eliminación de todos los archivos bajo lib
, e incluso lib/apis
, ya que busca de forma recursiva en el directorio.
Y finalmente, no olvides confirmar tus cambios:
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: lib/apis/aws.js
deleted: lib/apis/github.js
deleted: lib/apis/stripe.js
deleted: lib/db.js
$ git commit -am "Removed lib directory"
[master 53fc6af] Removed lib directory
4 files changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 lib/apis/aws.js
delete mode 100644 lib/apis/github.js
delete mode 100644 lib/apis/stripe.js
delete mode 100644 lib/db.js