Omitir los cambios de archivo con Git

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Git no debe realizar un seguimiento de todos los archivos del proyecto. Los archivos temporales del entorno de desarrollo, los resultados de prueba y los registros son ejemplos de archivos que probablemente no es necesario realizar un seguimiento.

Puede usar diferentes mecanismos para informar a Git de qué archivos del proyecto no se deben realizar un seguimiento y para garantizar que Git no notificará los cambios en esos archivos. Para los archivos que Git no realiza el seguimiento, puede usar un archivo .gitignore o exclude. Para los archivos que Git realiza el seguimiento, puede indicar a Git que detenga ese seguimiento y que omita los cambios.

En este artículo aprenderá a:

  • Omitir los cambios en los archivos sin realizar un seguimiento mediante un archivo .gitignore.
  • Omitir los cambios en los archivos sin realizar un seguimiento mediante un archivo exclude.
  • Detener el seguimiento de un archivo y omitir los cambios mediante el comando git update-index.
  • Detener el seguimiento de un archivo y omitir los cambios mediante el comando git rm.

Usar un archivo .gitignore

Puede indicar a Git que no realice un seguimiento de determinados archivos del proyecto agregando y configurando un archivo .gitignore. Las entradas en un archivo .gitignore sólo se aplican a los archivos sin seguimiento. No impedirán que Git informe de cambios en los archivos con seguimiento. Los archivos con seguimiento son archivos confirmados y existen en la última instantánea de Git.

Cada línea de un archivo .gitignore especifica un patrón de búsqueda de archivos relativo a la ruta de acceso del archivo .gitignore. La sintaxis .gitignore es flexible y admite el uso de comodines para especificar archivos individuales o múltiples por nombre, extensión y ruta. Git compara .gitignore patrones de búsqueda con los archivos de su proyecto para determinar qué archivos ignorar.

Normalmente, agregará un archivo .gitignore a la carpeta raíz del proyecto. Sin embargo, puede agregar un archivo .gitignore a cualquier carpeta del proyecto para que Git sepa qué archivos omitir dentro de esa carpeta y sus subcarpetas en cualquier profundidad anidada. Para varios archivos .gitignore, los patrones de búsqueda de archivos especificados por un archivo .gitignore dentro de una carpeta tienen prioridad sobre los patrones especificados por un archivo .gitignore dentro de una carpeta principal.

Puede crear manualmente un archivo .gitignore y agregarle entradas de patrones de archivo. O bien, puede ahorrar tiempo descargando una plantilla .gitignore para su entorno de desarrollo del repositorio gitignore de GitHub. Una de las ventajas de utilizar un archivo .gitignorees que puede confirmar los cambios y compartirlo con los demás.

Nota:

Visual Studio crea automáticamente un archivo .gitignore para el entorno de desarrollo de Visual Studio al crear un repositorio de Git.

Visual Studio 2022 proporciona una experiencia de control de versiones de Git a través del menú Git, Cambios de Git y los menús contextuales del Explorador de soluciones. En Visual Studio 2019, versión 16.8, también se ofrece la interfaz de usuario de Git Team Explorer. Parar obtener más información, vea la pestaña Visual Studio 2019: Team Explorer.

En la ventana Cambios de Git, haga clic con el botón derecho en cualquier archivo modificado que desee que Git omita y seleccione Omitir este elemento local u Omitir esta extensión. Esas opciones de menú no existen para los archivos de seguimiento.

Captura de pantalla de las opciones de menú contextual de los archivos modificados en la ventana Cambios de Git en Visual Studio.

La opción Omitir este elemento local agrega una nueva entrada al archivo .gitignore y quita el archivo seleccionado de la lista de archivos modificados.

La opción Omitir esta extensión agrega una nueva entrada al archivo .gitignore y quita todos los archivos con la misma extensión que el archivo seleccionado de la lista de archivos modificados.

Cualquier opción crea un archivo .gitignore si aún no existe en la carpeta raíz del repositorio y agrega una entrada a él.

Edición de un archivo gitignore

Cada entrada del archivo .gitignore es un patrón de búsqueda de archivos que especifica qué archivos ignorar, un comentario que empieza por el signo de número (#) o una línea en blanco (para facilitar la lectura). La sintaxis .gitignore es flexible y admite el uso de comodines para especificar archivos individuales o múltiples por nombre, extensión y ruta. Todas las rutas de acceso del patrón de búsqueda de archivos son relativas al archivo .gitignore.

Estos son algunos ejemplos de patrones comunes de búsqueda de archivos:

# Ignore all files with the specified name.
# Scope is all repo folders.
config.json

# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json

# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json

# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile

# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile

# Ignore all files in the 'logs' subfolder.
/logs/

En cuanto modifique un archivo .gitignore, Git actualiza la lista de archivos que omite.

Nota:

Los usuarios de Windows deben usar barra diagonal (/) como separador de ruta de acceso en un archivo .gitignore en lugar de una barra diagonal inversa (\). Todos los usuarios deben agregar una barra diagonal al especificar una carpeta.

Usar un archivo .gitignore global

Puede designar un archivo .gitignore como un archivo de omisión global que se aplica a todos los repositorios de Git locales. Para ello, use el comando git config de la manera siguiente:

git config core.excludesfile <gitignore file path>

Un archivo global .gitignore ayuda a garantizar que Git no confirma determinados tipos de archivo, como archivos binarios compilados, en cualquier repositorio local. Los patrones de búsqueda de archivos en un archivo .gitignore específico del repositorio tienen prioridad sobre los patrones en un archivo global .gitignore.

Usar un archivo de exclusión

También puede agregar entradas de patrones de búsqueda de archivos al archivo exclude de la carpeta .git/info/ de su repositorio local. El archivo exclude permite a Git saber qué archivos sin seguimiento debe omitir. Utiliza la misma sintaxis de patrón de búsqueda de archivos que un archivo .gitignore.

Las entradas en un archivo exclude sólo se aplican a los archivos sin seguimiento. No impedirán que Git informe de los cambios en los archivos confirmados que ya realiza el seguimiento. Solo existe un archivo exclude por repositorio.

Dado que Git no confirma ni inserta el archivo exclude, puede usarlo de forma segura para omitir los archivos en el sistema local sin afectar a nadie más.

Usar el índice de actualización de Git para omitir los cambios

A veces es conveniente detener temporalmente el seguimiento de un archivo de repositorio local y hacer que Git ignore los cambios en el archivo. Por ejemplo, es posible que quiera personalizar un archivo de configuración para el entorno de desarrollo sin el riesgo de confirmar los cambios. Para ello, puede ejecutar el comando git update-index con la marca skip-worktree:

git update-index --skip-worktree <file path>

Para reanudar el seguimiento, ejecute el comando git update-index con la marca --no-skip-worktree.

O bien, puede detener temporalmente el seguimiento de un archivo y hacer que Git omita los cambios en el archivo mediante el comando git update-index con la marca assume-unchanged. Esta opción es menos eficaz que la marca skip-worktree, ya que una operación de Git pull puede revertir la marca assume-unchanged que cambia el contenido del archivo.

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

Para reanudar el seguimiento, ejecute el comando git update-index con la marca --no-assume-unchanged.

Usar Git rm para omitir los cambios

Las entradas de un archivo .gitignore o exclude no tienen ningún efecto en los archivos que Git ya realiza el seguimiento. Git realiza un seguimiento de los archivos que ha confirmado anteriormente. Para quitar permanentemente un archivo de la instantánea de Git para que Git ya no lo siga, pero sin eliminarlo del sistema de archivos, ejecute los siguientes comandos:

git rm --cached <file path>
git commit <some message>

Después, use una entrada de archivo .gitignore o exclude para evitar que Git informe de cambios en el archivo.

Pasos siguientes