Tengo un repositorio git alojado en Github. Después de enviar muchos archivos, me doy cuenta de que necesito crear .gitignore y excluir .exe, .obj archivos
Sin embargo, ¿eliminará automáticamente estos archivos confirmados del repositorio? ¿Hay alguna forma de forzar eso?
¿Responde esto a tu pregunta? ¿Cómo hacer que Git “se olvide” de un archivo que fue rastreado pero ahora está en .gitignore?
– LightCC
27 de julio de 2020 a las 21:33
La respuesta correcta está aquí. Si usted git rm --cached (o simplemente elimine los archivos ofensivos y confirme), puede eliminar esos archivos al finalizar la compra. Utilizando git update-index --skip-worktree <files> los eliminará de ser rastreados directamente.
– LightCC
27 de julio de 2020 a las 21:35
manojlds
No, no puede forzar la eliminación de un archivo que ya está comprometido en el repositorio solo porque se agregó al .gitignore
Tienes que git rm --cached para eliminar los archivos que no desea en el repositorio. (-en caché ya que probablemente desee conservar la copia local pero eliminarla del repositorio). Entonces, si desea eliminar todos los exe de su repositorio, haga
git rm --cached /\*.exe
(Tenga en cuenta que el asterisco * se cita desde el shell; esto permite que git, y no el shell, expanda los nombres de ruta de los archivos y subdirectorios)
@Madhur Ahuja En realidad, si lo haces git rm /\*.exe eliminará todos los exe en su repositorio
– manojlds
30 de junio de 2011 a las 13:51
¿Para qué sirven los /\?
– Costa Michailidis
9 mayo 2014 a las 13:55
@Costa están ahí para escapar del asterisco, para evitar que el shell lo interprete, como está destinado git.
– Lambart
14/09/2016 a las 19:24
Advertencia: los archivos se mantienen en local, es cierto… Pero otros usuarios que ejecutan un git pull verán sus archivos borrados.
– Escritos
10 oct 2019 a las 12:55
Deshacer la última confirmación es bastante útil en el código VS, solo quería mencionar que
Sin embargo, ¿eliminará automáticamente estos archivos confirmados del repositorio?
No. Incluso con una existente .gitignore puede organizar archivos “ignorados” con el -f (fuerza) bandera. Si los archivos ya están comprometidos, no se eliminan automáticamente.
git rm --cached path/to/ignored.exe
¿Significa eso que he eliminado individualmente cada .exe?
– Madhur Ahuja
30 de junio de 2011 a las 13:37
Probablemente pueda procesar por lotes esto, pero no sé cómo funciona esto en Windows
– KingCrunch
30 de junio de 2011 a las 13:40
Tuve que eliminar .idea y las carpetas de destino y después de leer todos los comentarios esto funcionó para mí:
La página de manual de git-filter-branch contiene ejemplos completos.
Nota Estarás reescribiendo la historia. Si ha publicado alguna revisión que contenga los archivos agregados accidentalmente, esto podría crear problemas para los usuarios de esas sucursales públicas. Infórmeles, o tal vez piense en lo mucho que necesita eliminar los archivos.
Nota En presencia de etiquetas, utilice siempre el --tag-name-filter cat opción a git filter-branch. Nunca duele y te ahorrará el dolor de cabeza cuando te des cuenta más tarde de que lo necesitabas.
Ejecuté este comando que mostraba Reescribir 57c1f1f04a3ed01f50c3260714cfc82c973ac816 (3/3) ADVERTENCIA: Ref ‘refs/heads/master’ no ha cambiado y no pasó nada
– Madhur Ahuja
30 de junio de 2011 a las 13:36
Es una advertencia, y lo más probable es que la rama maestra no contenga (todavía) ninguna revisión con los archivos que se eliminarán. Puedes comprobarlo fácilmente. Si hay un problema, actualice la pregunta. PD: utilizar — --all para reescribir todas las sucursales (locales) a la vez
– seje
30 de junio de 2011 a las 13:46
Ceniza
Incluso después de eliminar los archivos y luego confirmar, aún tendrá esos archivos en el historial. Para eliminarlos, considere usar BFG Repo-Limpiador. Es una alternativa a git-filter-branch.
Ejecuté este comando que mostraba Reescribir 57c1f1f04a3ed01f50c3260714cfc82c973ac816 (3/3) ADVERTENCIA: Ref ‘refs/heads/master’ no ha cambiado y no pasó nada
– Madhur Ahuja
30 de junio de 2011 a las 13:36
Es una advertencia, y lo más probable es que la rama maestra no contenga (todavía) ninguna revisión con los archivos que se eliminarán. Puedes comprobarlo fácilmente. Si hay un problema, actualice la pregunta. PD: utilizar — --all para reescribir todas las sucursales (locales) a la vez
– seje
30 de junio de 2011 a las 13:46
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
Los futuros usuarios de Google pueden encontrar esto extremadamente útil. Resumido y al grano: git-tower.com/learn/git/faq/ignore-tracked-files-in-git
– Austin Decano
20 de febrero de 2018 a las 22:51
¿Responde esto a tu pregunta? ¿Cómo hacer que Git “se olvide” de un archivo que fue rastreado pero ahora está en .gitignore?
– LightCC
27 de julio de 2020 a las 21:33
La respuesta correcta está aquí. Si usted
git rm --cached
(o simplemente elimine los archivos ofensivos y confirme), puede eliminar esos archivos al finalizar la compra. Utilizandogit update-index --skip-worktree <files>
los eliminará de ser rastreados directamente.– LightCC
27 de julio de 2020 a las 21:35