Eliminar el archivo del repositorio pero mantenerlo localmente

369

Tengo una carpeta que me gustaría eliminar en mi repositorio remoto. Me gustaría eliminarlo, pero mantener la carpeta en mi computadora

Rodrigo Souza
fuente
Observe las preguntas relacionadas sugeridas mientras escribe las suyas; el duplicado probablemente fue una de las dos primeras.
Cascabel
Otro duplicado: stackoverflow.com/questions/1273108/…
Cascabel el

Respuestas:

637
git rm --cached -r somedir

Organizará la eliminación del directorio, pero no toca nada en el disco. Esto también funciona para un archivo, como:

git rm --cached somefile.ext

Después, es posible que desee agregar somedir/o somefile.exta su .gitignorearchivo para que git no intente agregarlo nuevamente.

jamessan
fuente
24
Y luego agregue la ruta a .gitignore para que git no intente hacerlo agregar más tarde.
grossvogel
3
¿Esto resultará en (archivos en) el directorio que se eliminará cuando extraiga del control remoto?
bstpierre
No cuando él tira; los archivos permanecerán eliminados localmente durante el proceso de fusión automática de extracción. Después de eso, una inserción hará que los archivos se eliminen del lado del servidor.
Walter Mundt
77
¿Qué sucede si tengo un tercer control remoto? ¿Se eliminarán los archivos correspondientes en un tirón futuro? Pregunto porque siento que este es un caso de uso bastante común, es decir, verifica algunos archivos en el repositorio, me doy cuenta en una fecha posterior que divergen entre controles remotos, por una buena razón, y nunca debería haber estado en el repositorio en primer lugar, quiero para resolver eso manteniendo todos los pagos locales exactamente como son, pero eliminando los archivos del repositorio.
Bobby Jack
66
Para archivos individuales, puede hacerlogit rm --cached path/to/file
Travis Reeder
3

Yo solo:

  • Mueva la carpeta fuera de su árbol de trabajo
  • git rm la carpeta, confirma el cambio
  • Agregar a .gitignore(o .git/info/excludes), confirmar el cambio
  • Mueve la carpeta hacia atrás
Jeff
fuente
8
esta no es una buena solución, ¿qué pasa si tiene un directorio muy grande?
ioleo
probablemente necesite usargit rm -r
theUtherSide
1
@loostro simplemente no lo mueva a otro dispositivo de bloque. La mayoría de los sistemas de archivos simplemente actualizarán el inodo del archivo, y no moverán literalmente todo el directorio
648trindade