GIT: excluir/ignorar archivos de la confirmación [duplicate]

3 minutos de lectura

avatar de usuario
Patricio

¡Necesito ignorar los archivos en git! No creo que ignorar sea la palabra correcta en realidad; Quiero que los archivos estén en git, pero no quiero poder realizar cambios en ellos. Esto puede parecer algo extraño para algunos, pero hay muchos, muchos casos en los que necesito esta funcionalidad. La única instancia en la que lo necesito ahora es cuando uso git con un CMS; el CMS no funcionará sin archivos que cambian constantemente, pero no quiero que esos archivos se confirmen nunca después de la confirmación inicial. (Esto es muy fácil de hacer con SVN y Tortoise).

flujo de trabajo:

  1. Obtenga todos los archivos necesarios para ejecutar la aplicación.
  2. Ignora los directorios / archivos especificados al confirmar.

Esto es lo que he probado:

  1. .gitignore — los archivos nunca ingresan a git. Si el archivo ya está en caché, el archivo .gitignore no hace nada.
  2. /.git/info/exclude — el mismo problema que .gitignore, pero solo para el repositorio local.
  3. Ramificación — master => LocalIgnores => WorkingBranch. Cuando la rama de trabajo se fusiona con la maestra, los cambios realizados desde LocalIgnores terminan en la maestra. Además, cuando paga una de las nuevas sucursales, los archivos eliminados se eliminan en lugar de ignorarse.
  4. Estructura de archivos de terceros: directorio de terceros en el nodo raíz que contiene una copia de todos los archivos importantes de terceros para que puedan copiarse en el directorio de trabajo que utiliza el archivo .gitignore. (Este funciona, pero tiene que haber una solución más fácil/mejor).

  • El duplicado de @Albireo manojlds es más apropiado

    – Carlos B

    24 de septiembre de 2013 a las 10:01

avatar de usuario
Andy

Aquí está mi respuesta de una pregunta similar.

git update-index debería hacer lo que quieras

Esto le dirá a git que desea comenzar a ignorar los cambios en el archivo
git update-index --assume-unchanged path/to/file

Cuando quieras empezar a hacer un seguimiento de nuevo
git update-index --no-assume-unchanged path/to/file

  • Impresionante. Eso lo hizo. Creé un par de archivos bat, IgnoreLocally.bat y UnIgnoreLocally.bat, que se ejecutan desde un archivo .LocalIgnore. Un clic es mucho más fácil que copiar y pegar toneladas de archivos. Gracias por la ayuda. ¡Ahora para que la tortuga lo incluya en sus cosas!

    – Patricio

    15 de agosto de 2011 a las 21:06


  • ¿Por qué no lo cierra como un duplicado, en lugar de citar su respuesta? Hay tantas preguntas sobre esto mismo. Todo se convierte en ruido para los futuros usuarios.

    – manojlds

    15 de agosto de 2011 a las 21:28

  • @manojlds No sabía que había una manera de marcar un duplicado… ¿Se supone que debes marcar: necesita atención->otra->que no sea escribir “duplicado”?

    – Andy

    15 de agosto de 2011 a las 21:32

  • @Andy – Hay un close junto a la izquierda de la bandera. Elija Duplicado exacto en eso.

    – manojlds

    15 de agosto de 2011 a las 21:34

  • @manojlds Todavía no tengo ese privilegio.

    – Andy

    15 de agosto de 2011 a las 21:39

Otra solución es utilizar un pre-commit gancho. Ver git help hooks para detalles.

  • Esto es más difícil de configurar: debe escribir un script de shell para expresar exactamente lo que desea permitir o rechazar, lo que probablemente significa que necesita tener una comprensión bastante buena de git.

  • Es más permanente y flexible: con trucos como git update-index puede olvidarse accidentalmente de ejecutarlo, etc. Pero una vez que configura un gancho, nunca más tendrá que preocuparse por eso.

Al igual que los otros trucos sugeridos, los ganchos no se propagan automáticamente entre repositorios, pero pueden introdúzcalos como archivos regulares y haga que todos los vinculen a .git/hooks.

  • simplemente te pierdes algún tipo de ejemplo.

    – Sérgio

    1 de diciembre de 2014 a las 16:25

¿Ha sido útil esta solución?