Aplicar .gitignore a archivos confirmados

5 minutos de lectura

Aplicar gitignore a archivos confirmados
usuario880954

He enviado un montón de archivos que ahora quiero ignorar. ¿Cómo puedo decirle a git que ahora ignore estos archivos de futuras confirmaciones?

EDITAR: También quiero eliminarlos del repositorio. Son archivos creados después de la compilación o para soporte de herramientas específicas del usuario.

  • posible duplicado del archivo .gitignore sin ignorar

    – Woble

    23 de septiembre de 2011 a las 11:10

  • @Wooble La respuesta puede ser similar, pero esta pregunta describe exactamente el problema al que me enfrenté y que necesitaba resolver.

    – rjmunro

    3 de enero de 2013 a las 12:15

  • Esta es la respuesta que aborda directamente la pregunta del título con cambios mínimos en su repositorio de git: stackoverflow.com/a/26245961/3543437

    – KayleeFrye_onDeck

    6 jun 2017 a las 22:35

1646970386 809 Aplicar gitignore a archivos confirmados
jonathan callen

Después de editar .gitignore para hacer coincidir los archivos ignorados, puede hacer git ls-files -ci --exclude-standard para ver los archivos que están incluidos en las listas de exclusión; entonces puedes hacer

  • Linux/MacOS: git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
  • Windows (PowerShell): git ls-files -ci --exclude-standard | % { git rm --cached "$_" }
  • Windows (cmd.exe): for /F "tokens=*" %a in ('git ls-files -ci --exclude-standard') do @git rm --cached "%a"

para eliminarlos del repositorio (sin borrarlos del disco).

Editar: También puede agregar esto como un alias en su archivo .gitconfig para que pueda ejecutarlo cuando lo desee. Simplemente agregue la siguiente línea debajo del [alias] sección (modifique según sea necesario para Windows o Mac):

apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached

(Los -r bandera en xargs previene git rm se ejecute en un resultado vacío e imprima su mensaje de uso, pero solo puede ser compatible con GNU findutils. Otras versiones de xargs puede o no tener una opción similar).

Ahora solo puedes escribir git apply-gitignore en su repositorio, ¡y hará el trabajo por usted!

  • Creo que xargs para mac no tiene -r… o el mío tiene errores/viejo, no sé… y por qué el ! antes de git? bueno… el mio funciono como alias apply-gitignore="git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached". ¡gracias!

    – Felipe Sabino

    6 de diciembre de 2012 a las 21:09

  • en ventanas for /F "tokens=*" %a in ('git ls-files -ci --exclude-standard') do @git rm --cached "%a"

    – Luke Puplet

    3 de julio de 2013 a las 16:07

  • Funcionó a la perfección. ¡Muy apreciado!

    – Rixhers Ajazi

    6 de junio de 2014 a las 19:11

  • ¡Gracias! Esto es genial.

    – Dibujó R

    06/02/2015 a las 21:44

  • Para usuarios de Mac, -r es predeterminado y no es aceptado por las versiones de BSD. así que elimina -r.

    – Weishi Z.

    9 de abril de 2016 a las 4:56

Aplicar gitignore a archivos confirmados
pelota mate

  1. Editar .gitignore para que coincida con el archivo que desea ignorar
  2. git rm --cached /path/to/file

Ver también:

  • ¿Cómo puedo git rm un archivo sin eliminarlo del disco?
  • Eliminar un archivo de un repositorio de Git sin eliminarlo del sistema de archivos local
  • Ignorar un directorio de un repositorio de Git después de que se haya agregado

  • Sin embargo, hay muchos archivos. No quiero tener que hacer esto para cada uno

    – usuario880954

    23 de septiembre de 2011 a las 11:08

  • ¿Están los archivos en algún directorio común? De lo contrario, el problema se reduce a una pregunta de uso de shell, no a git.

    – bola mate

    23 de septiembre de 2011 a las 11:19

  • Es necesario que haya un modo ‘Olvidé agregar mi .gitignore hasta después de mi compromiso inicial’.

    – Luke Puplet

    3 de julio de 2013 a las 15:58

  • La respuesta está debajo de esta.

    –Ross Brasseaux

    1 de enero de 2015 a las 17:22

  • Me pidió que agregara flag -r para poder hacerlo.

    – Pedro

    9 de abril de 2018 a las 6:01

para dejar el archivo en el repositorio pero ignorar cambios futuros:

git update-index --assume-unchanged <file>

y para deshacer esto:

git update-index --no-assume-unchanged <file>

para averiguar qué archivos se han configurado de esta manera:

git ls-files -v|grep '^h'

crédito por la respuesta original a
http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/

  • Chronial tiene una excelente respuesta para hacer esto recursivamente para un directorio: stackoverflow.com/a/16346756/1101076

    – jordan314

    26/02/2016 a las 20:46

  • Quería confirmar una configuración IDE pero no realizar un seguimiento de los cambios innecesarios. Esto funciona, aunque no estoy seguro de si funcionará para otras personas que consulten el repositorio. Se puede combinar con git ls-files -ci --exclude-standard -z | xargs -0 git update-index --assume-unchanged si eso ayuda

    – dlamblin

    10 de mayo de 2017 a las 7:17


  • Este es el solamente respuesta que hace precisamente lo que pide la pregunta del título. ¡PERFECTO! La mayoría de estas otras respuestas estaban jugando con archivos innecesariamente.

    – KayleeFrye_onDeck

    6 jun 2017 a las 22:34

  • Esta es exactamente la respuesta correcta para la pregunta. Usando comandos como git rm --cached eliminará el archivo en el repositorio, lo que no satisface la necesidad del cuestionario. Gracias. Realmente lo aprecio. Tu respuesta me ayuda mucho.

    – Ramwin

    14 de abril de 2020 a las 5:15

  • El último comando, en Windows, reemplaza grep con findstr para obtener el mismo resultado. git ls-archivos -v|findstr ‘^h’

    – MattyMatt

    10 dic 2021 a las 16:31

Aplicar gitignore a archivos confirmados
Théo Attali

Asegúrese de que su repositorio real sea la última versión y no tenga cambios continuos

  1. Editar .gitignore como desées
  2. git rm -r --cached . (eliminar todos los archivos)
  3. git add . (volver a agregar todos los archivos según gitignore)

luego comprométete como de costumbre

Vieja pregunta, pero algunos de nosotros estamos en git-posh (potencia Shell). Esta es la solución para eso:

git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }

1646970389 994 Aplicar gitignore a archivos confirmados
Arrendajo

  1. Agregue su nombre de archivo/ruta de archivo en el .gitignore expediente.
  2. Ahora ejecuta el comando en git bash git rm --cached file/path/from/root/folder
  3. Ahora confirme su código usando git commit.

Ahora el archivo no debería ser rastreado en el git status mando.

Tiendo a olvidar que soy demasiado perezoso para leer lo que hacen estos comandos de git. Así que lo hago así:

  • Muevo todos los archivos, que quiero ignorar, temporalmente fuera del repositorio
  • Confirmo estos “archivos eliminados” en mi GUI de git (ahora no están rastreados)
  • Actualizo el archivo .gitignore
  • Muevo los archivos de nuevo al repositorio (o los elimino, si esa era mi intención)

¿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