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



Observe las preguntas relacionadas sugeridas mientras escribe las suyas; el duplicado probablemente fue una de las dos primeras.
Cascabel


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.


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.