.gitignore después de confirmar [duplicate]

4 minutos de lectura

gitignore despues de confirmar duplicate
Madhur Ahuja

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?

  • 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. Utilizando git update-index --skip-worktree <files> los eliminará de ser rastreados directamente.

    – LightCC

    27 de julio de 2020 a las 21:35


1646751907 297 gitignore despues de confirmar duplicate
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

    – Vitaliy T.

    2 de noviembre de 2021 a las 15:42

Si aún no ha enviado los cambios:

git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push

gitignore despues de confirmar duplicate
reycrunch

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í:

git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'

y luego empujar para dominar

1646751908 625 gitignore despues de confirmar duplicate
seje

Sin embargo, ¿eliminará automáticamente estos archivos confirmados del repositorio?

No.

La ‘mejor’ receta para hacer esto es usar git filter-branch como está escrito aquí:

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


1646751908 36 gitignore despues de confirmar duplicate
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?

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
Privacidad