He agregado un archivo llamado "file1.txt"
a un repositorio Git. Después de eso, lo comprometí, agregué un par de directorios llamados dir1
y dir2
, y los comprometí al repositorio de Git.
Ahora el repositorio actual tiene "file1.txt"
, dir1
y dir2
. ¿Cómo puedo eliminar "file1.txt"
sin afectar a otros, como dir1
y dir2
?
git rm
es la respuesta correcta, pero recuerde que el archivo seguirá ahí en la historia. Si desea eliminar un archivo porque tenía información confidencial, deberá hacer algo más drástico. (Cambiar la historia, especialmente para el contenido que ya ha promovido, es una acción drástica, y debe evitarse si es posible.)Respuestas:
Uso
git rm
.Si desea eliminar el archivo del repositorio de Git y el sistema de archivos , use:
Pero si desea eliminar el archivo solo del repositorio de Git y no eliminarlo del sistema de archivos, use:
Y para impulsar los cambios al repositorio remoto
fuente
git rm file.txt
elimina el archivo del repositorio pero también lo elimina del sistema de archivos local .Para eliminar el archivo del repositorio y no eliminarlo del sistema de archivos local, use:
git rm --cached file.txt
La siguiente situación exacta es donde uso git para mantener el control de versiones para el sitio web de mi empresa, pero el directorio "mickey" era una carpeta tmp para compartir contenido privado con un desarrollador de CAD. Cuando necesitaba archivos ENORMES, hice un directorio privado y desvinculado y puse los archivos allí para que los buscara a través del navegador. Olvidando que hice esto, luego realicé una
git add -A
desde el directorio base del sitio web. Posteriormente,git status
mostró los nuevos archivos que necesitan confirmación. Ahora necesitaba eliminarlos del seguimiento y control de versiones de git ...La salida de muestra a continuación es de lo que me acaba de pasar, donde eliminé involuntariamente el
.003
archivo. Afortunadamente, no me importa lo que sucedió con la copia local.003
, pero algunos de los otros archivos actualmente modificados fueron actualizaciones que acabo de hacer en el sitio web y ¡sería épico haber sido eliminado en el sistema de archivos local! "Sistema de archivos local" = el sitio web en vivo (no es una buena práctica, pero es una realidad) .Actualización: esta respuesta está obteniendo algo de tráfico, así que pensé que mencionaría mi otra respuesta de Git que comparte un par de excelentes recursos: esta página tiene un gráfico que me ayuda a desmitificar a Git. El libro "Pro Git" está en línea y me ayuda mucho.
fuente
git commit -m "Just removing file1.txt"
y luego, si tiene un repositorio remoto, presione el compromiso con algo comogit push origin master
.Primero, si está utilizando
git rm
, especialmente para múltiples archivos, considere que cualquier comodín será resuelto por el shell, no por elgit
comando.Pero, si su archivo ya está en GitHub, puede (desde julio de 2013) eliminarlo directamente de la GUI web.
Luego "
git pull
" en su repositorio local, y eso también eliminará el archivo localmente.¿Qué hace que esta respuesta sea una forma (indirecta) de eliminar un archivo de git repo?
(Sin mencionar que un archivo en GitHub está en un "repositorio de git")
(la confirmación reflejará la eliminación de ese archivo):
La última oración significa que el archivo eliminado sigue siendo parte del historial y puede restaurarlo con bastante facilidad (pero aún no a través de la interfaz web de GitHub):
Consulte " Restaurar un archivo eliminado en un repositorio de Git ".
fuente
Esta es la única opción que funcionó para mí.
Nota: Reemplace * .sql con su nombre de archivo o tipo de archivo. Tenga mucho cuidado porque esto pasará por cada confirmación y extraerá este tipo de archivo.
EDITAR: preste atención: después de este comando no podrá empujar o tirar, verá el rechazo de 'historial no relacionado', puede usar 'git push --force -u origin master' para empujar o tirar
fuente
git push --force -u origin master
Además, si se trata de una carpeta que se eliminará y se trata de carpetas o archivos secundarios posteriores, use:
fuente
Use git rm --cached -r <foldername>
De manera más general,
git help
ayudará con al menos preguntas simples como esta:fuente
git help
confuso, pero es bueno para las cosas simples :)rm
organiza un archivo para su eliminación en lugar de eliminarlo del índice (aunque todavía no tiene sentido para los novatos).Si desea eliminar el archivo del repositorio, pero dejarlo en el sistema de archivos (no se rastreará):
Si desea eliminar el archivo del repositorio y del sistema de archivos, entonces hay dos opciones:
Si el archivo no tiene cambios organizados en el índice:
Si el archivo tiene cambios organizados en el índice:
fuente
git rm
solo eliminará el archivo de esta rama de ahora en adelante, pero permanece en el historial y git lo recordará.La forma correcta de hacerlo es con
git filter-branch
, como otros han mencionado aquí. Reescribirá cada confirmación en el historial de la rama para eliminar ese archivo.Pero, incluso después de hacer eso, git puede recordarlo porque puede haber referencias a él en reflog, controles remotos, etiquetas y demás.
Si desea eliminarlo por completo en un solo paso, le recomiendo que use
git forget-blob
https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/
Es fácil, solo hazlo
git forget-blob file1.txt
.Esto eliminará cada referencia, hacer
git filter-branch
y finalmente ejecutará el recolector de basura gitgit gc
para deshacerse por completo de este archivo en su repositorio.fuente
Otra forma si desea eliminar el archivo de su carpeta local usando el comando rm y luego enviar los cambios al servidor remoto.
fuente
Nota: si desea eliminar el archivo solo de git, use a continuación:
Si desea eliminar también del disco duro:
Si desea eliminar una carpeta (la carpeta puede contener pocos archivos), debe eliminarla utilizando el comando recursivo, como se muestra a continuación:
Si desea eliminar una carpeta dentro de otra carpeta
Entonces, puedes
commit
ypush
como siempre. Sin embargo, si desea recuperar la carpeta eliminada, puede seguir esto: es posible recuperar archivos eliminados de git.Lea más en el documento oficial.
fuente
Para borrar un archivo específico
Para limpiar todos los archivos no rastreados de un directorio de forma recursiva en un solo disparo
fuente
Si tiene la aplicación GitHub para Windows, puede eliminar un archivo en 5 sencillos pasos:
fuente
En mi caso, traté de eliminar el archivo en github después de algunas confirmaciones, pero guardar en la computadora
y luego este archivo fue ignorado
fuente
Primero, elimine archivos del repositorio local.
o eliminar archivos solo del repositorio local pero del sistema de archivos
En segundo lugar, confirmar los cambios en el repositorio local.
Finalmente, actualice / envíe los cambios locales al repositorio remoto.
fuente
Probé muchas de las opciones sugeridas y ninguna parecía funcionar (no enumeraré los diversos problemas). Lo que terminé haciendo, que funcionó, fue simple e intuitivo (para mí) fue:
fuente
Una vez que haya eliminado el archivo del repositorio
git rm
, puede usar BFG Repo-Cleaner para borrar completa y fácilmente el archivo del historial del repositorio.fuente
Tengo archivos obj y bin que accidentalmente llegaron al repositorio y no quiero contaminar mi lista de 'archivos cambiados'
Después de notar que fueron al control remoto, los ignoré agregando esto a
.gitignore
El problema es que ya están en el control remoto, y cuando se cambian, aparecen como modificados y contaminan la lista de archivos modificados.
Para dejar de verlos, debe eliminar toda la carpeta del repositorio remoto.
En un símbolo del sistema:
C:\repos\MyRepo
)C:\repos\MyRepo\SSIS
)git rm -r -f obj
git commit -m "remove obj folder"
Recibí un mensaje alarmante que decía que 13 archivos cambiaron 315222 eliminaciones
Luego, como no quería tener que buscar la línea CMD, entré en Visual Sstudio e hice una sincronización para aplicarlo al control remoto
fuente
Si necesita eliminar archivos de una extensión determinada (por ejemplo, archivos compilados), puede hacer lo siguiente para eliminarlos todos a la vez:
fuente
De acuerdo con la documentación .
git rm --cached giant_file
Cuando se trata de datos confidenciales, es mejor no decir que eliminó el archivo, sino incluirlo en la última confirmación conocida:
0. Modificar el último compromiso
Si desea eliminar el archivo de todo el historial de git, de acuerdo con la documentación , debe hacer lo siguiente:
1. Eliminarlo de su historial local
3. Si necesita eliminar del control remoto
4. Si también necesita eliminarlo de los lanzamientos de etiquetas:
fuente
En caso de que no presente en su repositorio local pero en git repo, simplemente abra el archivo en git repo a través de la interfaz web y encuentre el botón Eliminar en la esquina derecha de la interfaz. Haga clic aquí, para ver la opción de eliminación de la interfaz
fuente