Eliminando archivo versionado en git
Publicado: 2020-11-06Vale, hice mi procedimiento estándar para un nuevo proyecto relacionado con la escritura:
- Cree un nuevo repositorio en Bitbucket para guardar las entradas en fase de edición de mi blog.
- Cloné dicho repo en mi equipo local.
- Cree un nuevo proyecto de Sublime Text dentro del repo.
- Edite el
README.md
y realicé mi primer commit.
Por supuesto, olvidé incluir la referencia a *.sublime-workspace
en el .gitignore
y, al hacer el commit, ese archivo terminó versionado.
Por supuesto, el archivo *.sublime-workspace
no es un archivo que quiera versionado, y por lo tanto es algo que debo eliminar de git, pero no de mi equipo local.
Para ello, podemos ejecutar el comando rm
de git, como se muestra:
# Elimina copia del servidor solamente, manteniendo copia local git rm --cached nombre_de_proyecto.sublime-workspace
La opción --cached
es la que indica que se quiere mantener la copia local intacta. En caso de querer eliminar el archivo local támbién, se ejecuta el comando sin ese parámetro:
# Elimina copia local y del servidor. git rm nombre_de_proyecto.sublime-workspace
Ahora, antes de hacer el commit, hay que asegurar que el archivo del espacio de trabajo de Sublime va a ser ignorado, por lo que agregamos la siguiente línea al .gitignore
:
*.sublime-workspace
Ya que sabemos que el archivo no se volverá a versionar, ejecutamos un git status
solo para estar seguros, y debe aparecer algo por el estilo:
Changes to be committed: (use "git restore --staged <file>..." to unstage) deleted: ramoscarlos_blog.sublime-workspace Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: .gitignore
Después de esto, va la operación estándar de commit y push:
git commit -a -m "Eliminado archivo *.sublime-workspace, y agregada restricción a .gitignore" git push
De esta manera eliminamos un archivo de nuestro repo que no debió ser versionado, conservamos la copia local, y nos aseguramos que no vuelva a ser sincronizado.