Git es una herramienta enormemente configurable: nombre y correo del autor, editor de texto, comportamiento al integrar cambios, colores de la salida, atajos, credenciales y varios cientos de opciones más. Todo eso se gestiona con un único comando, git config, y se almacena en ficheros de texto plano con un formato sencillo.
Esta lección trata el mecanismo: dónde vive la configuración, qué niveles existen, quién gana cuando dos niveles dicen cosas distintas, cómo leer, escribir y borrar valores, y cómo mantener perfiles separados para el trabajo y los proyectos personales. Deliberadamente no vamos a listar todavía qué valores conviene fijar la primera vez: eso es el contenido de la siguiente lección, Configuración Inicial. Aquí aprendemos a manejar el mando; en la siguiente, qué botones pulsar.
Ana necesita esto ahora mismo: su portátil es el mismo que usa para el trabajo en su empresa y para gestor-tareas, y quiere que cada proyecto lleve el correo adecuado sin tener que acordarse cada vez.
Contenido
- Qué es
git config - Los tres niveles de configuración
- Precedencia: quién gana
- Leer valores
- Escribir valores
- Borrar valores
- El fichero
.gitconfigpor dentro - Edición directa con
--edit - Configuración condicional con
includeIf - Casos especiales: valores múltiples y tipos
- Qué es
git config
git configgit config es el comando que lee y escribe la configuración de Git. Su forma básica es:
Un ejemplo concreto, sin entrar aún en qué significa el valor:
Desglose de cada parte:
git config→ el comando.--global→ el nivel: en qué fichero se escribe. Si se omite, se usa el nivel local.core.editor→ la clave, formada por una sección (core) y un nombre (editor), separados por un punto."nano"→ el valor. Se entrecomilla siempre que contenga espacios o caracteres especiales.
Es importante entender que git config no valida las claves. Si escribes core.editorr con dos erres, Git lo aceptará sin protestar y la opción simplemente no tendrá ningún efecto. Es la causa número uno de configuraciones que "no funcionan".
Nota sobre versiones. Desde Git 2.46 existe una sintaxis alternativa más explícita:
git config get,git config set,git config unsetygit config list. Es equivalente a la clásica y algo más legible. En este curso usaremos la sintaxis clásica con opciones (--get,--unset,--list) porque funciona en todas las versiones y es la que encontrarás en la documentación existente.
- Los tres niveles de configuración
Git lee la configuración de varios ficheros, organizados en niveles de alcance creciente a decreciente. Los tres principales son:
| Nivel | Opción | Alcance | Ruta del fichero |
|---|---|---|---|
| Sistema | --system |
Todos los usuarios del equipo | Linux: /etc/gitconfigmacOS (Homebrew): /opt/homebrew/etc/gitconfigWindows: C:\Program Files\Git\etc\gitconfig |
| Global | --global |
Todos los repositorios de tu usuario | Linux/macOS: ~/.gitconfig o ~/.config/git/configWindows: C:\Users\<usuario>\.gitconfig |
| Local | --local |
Solo el repositorio actual | <repositorio>/.git/config |
Existen además dos niveles menos habituales que conviene conocer:
| Nivel | Opción | Alcance |
|---|---|---|
| Worktree | --worktree |
Solo la copia de trabajo actual, cuando se usan varias (módulo 6) |
| Comando | -c clave=valor |
Solo la ejecución de ese comando concreto |
El nivel de comando es muy útil para pruebas puntuales, porque no deja rastro:
git -c user.email="[email protected]" commit -m "Corregir estilos de la lista"Fíjate en que -c va antes del subcomando, no después: es una opción de git, no de commit.
Cuándo usar cada nivel
| Nivel | Úsalo para |
|---|---|
| Sistema | Políticas de toda la máquina; en la práctica lo tocan los administradores, casi nunca tú |
| Global | Tu identidad y tus preferencias personales: editor, colores, atajos |
| Local | Lo específico de un proyecto: un correo distinto, una configuración de finales de línea propia |
La regla general: empieza siempre por --global. Reserva --local para las excepciones reales de un proyecto concreto.
- Precedencia: quién gana
Cuando varios niveles definen la misma clave, gana el más específico. El orden, de menor a mayor prioridad:
graph TD
S["/etc/gitconfig<br/>--system<br/>prioridad más baja"] --> G["~/.gitconfig<br/>--global"]
G --> L[".git/config<br/>--local"]
L --> W[".git/config.worktree<br/>--worktree"]
W --> C["git -c clave=valor<br/>prioridad más alta"]
Un ejemplo concreto con el portátil de Ana:
| Fichero | Valor de user.email |
|---|---|
/etc/gitconfig |
(no definido) |
~/.gitconfig |
[email protected] |
gestor-tareas/.git/config |
[email protected] |
Resultado: dentro del repositorio gestor-tareas, Git usará [email protected]. En cualquier otro repositorio del portátil de Ana, [email protected].
Esta es exactamente la herramienta que Ana necesitaba: la configuración global cubre el caso mayoritario (su trabajo) y la local resuelve la excepción (su proyecto personal). En el apartado 9 veremos cómo automatizarlo para no tener que acordarse en cada repositorio nuevo.
- Leer valores
El valor efectivo de una clave
Devuelve el valor que Git usaría ahora mismo, ya resuelta la precedencia. También funciona sin --get, que es la forma abreviada más habitual:
Si la clave no está definida, el comando no imprime nada y devuelve un código de salida distinto de cero. Para dar un valor por defecto cuando no existe:
Leer un nivel concreto
Combinando --get con el nivel se consulta un fichero específico, ignorando los demás:
git config --global --get user.email # solo el fichero global
git config --local --get user.email # solo el del repositorio
git config --system --get user.email # solo el del sistemaEsto es fundamental para depurar: si el valor efectivo no es el que esperabas, consultar nivel por nivel revela de dónde sale.
Listar toda la configuración
Imprime todas las claves activas, una por línea, en formato clave=valor:
user.name=Ana Ferrer [email protected] core.editor=nano init.defaultbranch=main color.ui=auto
Y ahora el comando más útil de toda la lección:
Añade delante de cada línea el fichero del que procede:
file:/etc/gitconfig core.autocrlf=input file:/home/ana/.gitconfig user.name=Ana Ferrer file:/home/ana/.gitconfig [email protected] file:/home/ana/.gitconfig core.editor=nano file:.git/config [email protected] file:.git/config [email protected]:equipo/gestor-tareas.git
Observa la última aparición de user.email: cuando una clave aparece varias veces, la última línea es la que gana, porque los ficheros se procesan de menos a más específico. Aquí el valor efectivo es [email protected].
Una variante aún más informativa:
Añade también el nombre del nivel (system, global, local), lo que evita tener que deducirlo a partir de la ruta.
| Comando | Qué muestra |
|---|---|
git config <clave> |
El valor efectivo |
git config --global <clave> |
El valor en un nivel concreto |
git config --list |
Todas las claves activas |
git config --list --show-origin |
Todas las claves y su fichero de origen |
git config --list --show-scope |
Todas las claves y su nivel |
git config --get-regexp <patrón> |
Solo las claves que coinciden con una expresión regular |
Este último es muy práctico cuando buscas algo y no recuerdas el nombre exacto:
# Todas las claves de la sección user
git config --get-regexp '^user\.'
# Todo lo relacionado con alias
git config --get-regexp '^alias\.'
- Escribir valores
La forma básica ya la conocemos:
Puntos a tener en cuenta:
- Si la clave existe, se sobrescribe. No hay confirmación ni aviso.
- Las comillas son necesarias cuando el valor contiene espacios.
git config --global user.name Ana Ferrerfallaría, porque Git interpretaríaFerrercomo un argumento extra. - Las claves no distinguen mayúsculas en la sección y el nombre (
init.defaultBrancheinit.defaultbranchson la misma clave), pero los valores sí. - Si no indicas nivel, se usa
--local, lo que requiere estar dentro de un repositorio. Fuera de uno, Git dará el errorfatal: not in a git directory.
Este último punto merece un ejemplo, porque es un tropiezo clásico:
# Dentro de ~/proyectos/gestor-tareas: escribe en .git/config
git config user.email "[email protected]"
# En el escritorio, fuera de cualquier repositorio: ERROR
git config user.email "[email protected]"
# fatal: not in a git directoryAcostúmbrate a indicar siempre el nivel de forma explícita. Ahorra confusiones difíciles de diagnosticar.
Escribir en el nivel de sistema
Requiere privilegios de administrador, porque el fichero está fuera de tu carpeta personal:
En Windows hay que abrir Git Bash o PowerShell como administrador.
- Borrar valores
Para eliminar una clave se usa --unset:
Si la clave aparece varias veces en el mismo fichero (algo posible para ciertas claves, como veremos en el apartado 10), --unset fallará con el mensaje warning: <clave> has multiple values. En ese caso se usa --unset-all:
Para eliminar una sección entera:
| Comando | Efecto |
|---|---|
--unset <clave> |
Borra una clave con un solo valor |
--unset-all <clave> |
Borra todas las apariciones de la clave |
--remove-section <sección> |
Borra la sección completa |
Un matiz importante: borrar una clave de un nivel no la deja "sin valor", sino que deja que gane el nivel inferior. Si Ana borra user.email del .git/config de gestor-tareas, el correo pasará a ser el de su ~/.gitconfig, no ninguno.
Y una advertencia: --unset sin nivel explícito opera sobre el fichero local. Si querías limpiar el global y olvidas --global, borrarás algo que no era.
- El fichero
.gitconfig por dentro
.gitconfig por dentroTodos los ficheros de configuración de Git usan el mismo formato: INI, texto plano legible y editable a mano. Este podría ser el ~/.gitconfig de Ana:
[user]
name = Ana Ferrer
email = [email protected]
[core]
editor = nano
autocrlf = input
[init]
defaultBranch = main
[color]
ui = auto
[alias]
st = status
co = checkout
last = log -1 HEAD
[pull]
rebase = falseReglas del formato:
- Las secciones van entre corchetes:
[user],[core]. Corresponden a la parte anterior al punto en la clave. - Las claves se escriben con
nombre = valor, indentadas con un tabulador por convención (Git escribe tabulador; los espacios también funcionan). - Los comentarios empiezan por
#o;. - Los valores con espacios no necesitan comillas dentro del fichero, salvo que quieras conservar espacios al principio o al final.
La correspondencia entre el comando y el fichero es directa:
| Comando | Resultado en el fichero |
|---|---|
git config --global user.name "Ana Ferrer" |
[user] → name = Ana Ferrer |
git config --global alias.st status |
[alias] → st = status |
git config --global color.ui auto |
[color] → ui = auto |
Subsecciones
Algunas secciones admiten un nivel más, entre comillas. Se ven sobre todo en remotos y ramas:
[remote "origin"]
url = [email protected]:equipo/gestor-tareas.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/mainEn la línea de comandos, la subsección va en medio: remote.origin.url, branch.main.remote. Estas entradas las escribe Git automáticamente al añadir un remoto o al configurar el seguimiento de una rama, cosas del módulo 4. Rara vez las escribirás a mano, pero saber leerlas ayuda mucho a diagnosticar problemas.
Importante: a diferencia de las claves, las subsecciones sí distinguen mayúsculas.
[remote "Origin"]y[remote "origin"]son dos remotos distintos.
- Edición directa con
--edit
--editPara cambios de varias líneas, editar el fichero directamente es mucho más cómodo que encadenar comandos:
Abre ~/.gitconfig en el editor configurado en core.editor (o en el que indique la variable de entorno EDITOR). Al guardar y cerrar, los cambios son inmediatos: Git lee la configuración en cada ejecución, no la cachea.
Las tres variantes:
git config --system --edit # el fichero del sistema (requiere permisos)
git config --global --edit # tu fichero personal
git config --local --edit # el del repositorio actualTambién puedes abrir el fichero con cualquier editor, sin pasar por Git:
Es igual de válido. La ventaja de --edit es que no necesitas recordar la ruta, que varía entre sistemas.
Precaución: si escribes un fichero de configuración con un error de sintaxis (un corchete sin cerrar, por ejemplo), Git protestará en todos los comandos que ejecutes a partir de ese momento:
La solución es volver a abrir el fichero y corregir la línea indicada. Es reversible y no daña ningún repositorio, pero resulta desconcertante la primera vez.
- Configuración condicional con
includeIf
includeIfLlegamos a la funcionalidad más elegante del sistema de configuración, y la que resuelve el problema de Ana de forma definitiva.
El problema
Ana usa el mismo portátil para dos contextos:
- Proyectos de su empresa, que deben firmarse con
[email protected]. - Proyectos personales como
gestor-tareas, que deben ir con[email protected].
Puede resolverlo con configuración local repositorio por repositorio, pero eso significa acordarse cada vez que clona o crea uno. Tarde o temprano se olvidará y hará confirmaciones con el correo equivocado, algo que solo se arregla reescribiendo el historial.
La solución: incluir configuración según la ruta
Git permite incluir otro fichero de configuración solo si se cumple una condición. La condición más útil es la ruta del repositorio.
Ana organiza sus carpetas así:
/home/ana/
├── trabajo/ ← repositorios de la empresa
│ └── portal-clientes/
└── personal/ ← proyectos propios
└── gestor-tareas/Y edita su ~/.gitconfig:
[user]
name = Ana Ferrer
email = [email protected]
[core]
editor = nano
[init]
defaultBranch = main
# Si el repositorio está bajo ~/personal/, incluir este otro fichero
[includeIf "gitdir:~/personal/"]
path = ~/.gitconfig-personalY crea el fichero ~/.gitconfig-personal:
[user]
email = [email protected]Cómo funciona, paso a paso:
- Git lee
~/.gitconfigde arriba abajo y estableceuser.email = [email protected]. - Al llegar a
includeIf, comprueba si el repositorio actual está dentro de~/personal/. - Si lo está, lee
~/.gitconfig-personalen ese punto, y suuser.emailsobrescribe el anterior. - Si no lo está, la línea se ignora y el correo de empresa se mantiene.
Resultado: Ana nunca más tiene que acordarse. Basta con guardar cada proyecto en la carpeta correcta.
Comprobación:
# Dentro de ~/personal/gestor-tareas
git config --get user.email
# → [email protected]
# Dentro de ~/trabajo/portal-clientes
git config --get user.email
# → [email protected]Las condiciones disponibles
| Condición | Se cumple cuando |
|---|---|
gitdir:<ruta> |
El repositorio está bajo esa ruta (distingue mayúsculas) |
gitdir/i:<ruta> |
Igual, sin distinguir mayúsculas (útil en Windows y macOS) |
onbranch:<nombre> |
La rama actual coincide con ese nombre o patrón |
hasconfig:remote.*.url:<patrón> |
Algún remoto del repositorio coincide con ese patrón de URL |
Reglas de la ruta en gitdir:
- Debe terminar en
/para que se aplique a todo lo que hay dentro, recursivamente. Sin la barra final solo coincidiría con esa carpeta exacta, y como Git compara contra la ruta del directorio.git, prácticamente nunca funcionaría como esperas. Es el error más frecuente al usarincludeIf. - Admite
~para la carpeta personal. - Admite comodines:
gitdir:~/clientes/*/coincide con cualquier subcarpeta de primer nivel.
La última condición, hasconfig:remote.*.url, es especialmente potente porque no depende de cómo organices las carpetas:
# Cualquier repositorio cuyo remoto esté en el servidor de la empresa
[includeIf "hasconfig:remote.*.url:[email protected]:**"]
path = ~/.gitconfig-trabajoAsí, aunque Ana clone un repositorio de la empresa en el escritorio por prisa, el correo correcto se aplicará igualmente.
include incondicional
Existe también la versión sin condición, útil para partir una configuración larga en piezas reutilizables:
Un patrón habitual en equipos: mantener un fichero de alias y colores compartido en un repositorio, y que cada persona lo incluya desde su ~/.gitconfig sin renunciar a su identidad propia.
- Casos especiales: valores múltiples y tipos
Claves con varios valores
La mayoría de claves tienen un solo valor, pero algunas admiten varios. Para añadir sin sobrescribir se usa --add:
git config --global --add safe.directory /opt/proyectos/comun
git config --global --add safe.directory /srv/repos/internoEn el fichero quedan dos líneas en la misma sección:
Para leerlas todas hace falta --get-all, porque --get devolvería solo la última:
| Comando | Comportamiento con valores múltiples |
|---|---|
git config <clave> <valor> |
Sobrescribe todos los valores existentes |
git config --add <clave> <valor> |
Añade uno más |
git config --get <clave> |
Devuelve el último |
git config --get-all <clave> |
Devuelve todos |
git config --unset-all <clave> |
Borra todos |
Tipos de valor
Git interpreta los valores según el tipo que espera la clave. Puedes forzar la interpretación al leer:
# Interpretar como booleano: acepta true/false, yes/no, on/off, 1/0
git config --type=bool core.ignorecase
# Interpretar como entero, admitiendo sufijos k, m, g
git config --type=int core.bigFileThreshold
# Expandir una ruta con ~ a su forma absoluta
git config --type=path core.excludesFileLos booleanos son flexibles al escribir. Estas seis líneas son equivalentes:
git config --global color.ui true
git config --global color.ui yes
git config --global color.ui on
git config --global color.ui 1
git config --global color.ui TRUE
git config --global color.ui TrueY una clave booleana escrita sin valor se interpreta como true:
Es válido, aunque poco legible. Es mejor escribir el valor de forma explícita.
Errores Comunes y Consejos
- Olvidar
--globaly escribir en el repositorio sin querer. Es el error más frecuente. Sin nivel explícito,git configescribe en.git/config, así que tu preferencia se aplica a un solo proyecto y te preguntarás por qué no funciona en los demás. Acostúmbrate a poner el nivel siempre. - Escribir mal el nombre de una clave. Git no valida nada:
core.editorropull.rebassese guardan sin protesta y no hacen nada. Si una opción no surte efecto, verifícala congit config --get <clave>y compárala con la documentación (git help config). - No entrecomillar valores con espacios.
git config --global user.name Ana Ferrerda error o guarda soloAna. Usa comillas siempre que haya espacios. - Olvidar la barra final en
includeIf "gitdir:...". Sin la/final, la condición casi nunca se cumple y el fichero incluido se ignora en silencio, sin ningún aviso. Es un fallo especialmente difícil de detectar. - Editar
.git/configcon un error de sintaxis. Deja Git inservible en ese repositorio hasta que se corrige la línea. No es grave ni destructivo, pero asusta. El mensaje indica el fichero y la línea exactos. - Confundir los niveles al diagnosticar. Cuando un valor no es el que esperas, no adivines: ejecuta
git config --list --show-origin --show-scopey localiza de qué fichero sale. - Consejo: guarda tu
~/.gitconfigen un repositorio propio. Es un fichero de texto pequeño que representa horas de ajustes. Muchos profesionales lo mantienen versionado junto a sus otros ficheros de configuración personal. - Consejo: usa
git config --list --show-originen cada máquina nueva. Es lo primero que conviene mirar al empezar en un equipo desconocido, y también al depurar comportamientos raros en un ordenador de empresa, donde el nivel de sistema puede traer sorpresas.
Ejercicios
Ejercicio 1: Resolver la precedencia
En el portátil de Bruno, los ficheros de configuración contienen esto:
/etc/gitconfig:
[core]
autocrlf = input
[user]
email = [email protected]~/.gitconfig:
[user]
name = Bruno Salas
email = [email protected]
[core]
editor = vim~/personal/gestor-tareas/.git/config:
[user]
email = [email protected]Responde, estando dentro del repositorio gestor-tareas:
- ¿Qué valor tiene
user.email? - ¿Y
user.name? - ¿Y
core.editor? - ¿Y
core.autocrlf? - ¿Qué comando ejecutarías para averiguar de qué fichero sale cada uno sin abrirlos?
- Si Bruno ejecuta
git config --unset user.emaildentro degestor-tareas, ¿cuál será el nuevo valor efectivo?
Ejercicio 2: Perfiles separados con includeIf
Carla trabaja con tres contextos en el mismo portátil:
- Proyectos de su empresa, en
~/trabajo/, con el correo[email protected]. - Proyectos de un cliente externo, en
~/clientes/acme/, con el correo[email protected]. - Proyectos personales, en
~/codigo/, con el correo[email protected].
Su nombre es siempre "Carla Vidal" y su editor siempre nano.
Escribe el contenido completo de su ~/.gitconfig y de los ficheros auxiliares que necesite. Después indica qué comando usaría para comprobar, desde dentro de ~/clientes/acme/panel-ventas, que el correo aplicado es el correcto.
Ejercicio 3: Diagnóstico
Ana se queja de que ha configurado su editor favorito pero Git sigue abriendo Vim cada vez que le pide escribir un mensaje. Esto es lo que ejecutó:
- Identifica dos errores distintos en ese comando.
- Escribe el comando correcto.
- Escribe los comandos para limpiar la clave equivocada que quedó guardada.
- Escribe el comando que le habría permitido detectar el problema por sí misma.
Soluciones
Solución al Ejercicio 1
-
user.email=[email protected]. El nivel local es el más específico de los tres presentes y gana sobre el global y el de sistema. -
user.name=Bruno Salas. Solo está definido en el global; nada lo sobrescribe. -
core.editor=vim. Solo está en el global. -
core.autocrlf=input. Solo está en el nivel de sistema, y ningún nivel superior lo redefine, así que se aplica. -
El comando de diagnóstico:
Mostrará cada clave precedida de su nivel y de la ruta del fichero. Para una sola clave:
- El nuevo valor efectivo sería
[email protected]. Borrar la clave del nivel local no la deja vacía: simplemente deja que gane el siguiente nivel, que es el global. El del sistema quedaría de nuevo tapado por el global.
Solución al Ejercicio 2
~/.gitconfig:
[user]
name = Carla Vidal
email = [email protected]
[core]
editor = nano
[init]
defaultBranch = main
[includeIf "gitdir:~/trabajo/"]
path = ~/.gitconfig-empresa
[includeIf "gitdir:~/clientes/acme/"]
path = ~/.gitconfig-acme~/.gitconfig-empresa:
[user]
email = [email protected]~/.gitconfig-acme:
[user]
email = [email protected]Decisiones que conviene justificar:
- El correo personal va en el fichero principal como valor por defecto, porque cualquier repositorio fuera de las dos carpetas específicas debe quedar con el personal, que es la opción menos comprometida en caso de olvido.
- El nombre y el editor van una sola vez en el fichero principal, ya que no cambian entre contextos.
- Todas las rutas terminan en
/, condición imprescindible para que la coincidencia sea recursiva. - Los
includeIfvan al final del fichero: se procesan en orden, y lo incluido después sobrescribe lo anterior.
Comprobación desde ~/clientes/acme/panel-ventas:
git config --get user.email
# → [email protected]
# Versión con diagnóstico, que además indica el fichero responsable:
git config --show-origin --get user.email
# → file:/home/carla/.gitconfig-acme [email protected]Solución al Ejercicio 3
-
Los dos errores:
- La clave está mal escrita:
core.editorrcon dos erres. Git la acepta sin validar y la guarda como una clave sin significado, así que no tiene ningún efecto. - Falta el nivel
--global: al omitirlo, el valor se habría escrito solo en.git/configdegestor-tareas, es decir, únicamente para ese repositorio. Incluso con la clave bien escrita, el editor seguiría siendo Vim en todos los demás proyectos de Ana.
- La clave está mal escrita:
-
Comando correcto:
- Limpiar la clave equivocada (está en el nivel local, porque así se escribió):
cd ~/personal/gestor-tareas
git config --local --unset core.editorr
# Comprobar que ya no queda nada de la sección core en local
git config --local --list- El comando de diagnóstico que habría revelado el problema:
No habría devuelto nada, señal de que la clave correcta no estaba definida en ningún nivel. Y con:
habría visto la línea file:.git/config core.editorr=nano, donde saltan a la vista tanto la errata como el nivel equivocado.
Conclusión
Ya dominas el mecanismo de configuración de Git. Todo pasa por git config, que lee y escribe ficheros de texto en formato INI repartidos en tres niveles: sistema (toda la máquina), global (tu usuario) y local (un repositorio), a los que se suman el nivel de worktree y la opción -c para una sola ejecución. Cuando varios niveles definen la misma clave, gana el más específico, y el comando git config --list --show-origin --show-scope es la herramienta definitiva para saber de dónde sale cada valor.
Has visto cómo leer (--get, --get-all, --list, --get-regexp), escribir (con y sin --add), borrar (--unset, --unset-all, --remove-section) y editar los ficheros directamente con --edit. Y has conocido includeIf, la pieza que permite mantener perfiles separados —personal, empresa, cliente— sin tener que acordarse de nada en cada repositorio nuevo, gracias a condiciones sobre la ruta (gitdir:), la rama (onbranch:) o la URL del remoto (hasconfig:).
Sabes manejar el mando; falta decidir qué botones pulsar. En la última lección del módulo, Configuración Inicial, aplicaremos todo esto al portátil de Ana para dejarlo listo: su identidad, el nombre de la rama por defecto, el editor, el tratamiento de los finales de línea, el comportamiento al integrar cambios, el almacén de credenciales y el color de la salida. Al terminar, Ana tendrá por fin todo preparado para crear el repositorio de gestor-tareas en el módulo 2.
Dominando Git: De Principiante a Avanzado
Módulo 1: Introducción a Git
- ¿Qué es Git?
- Instalando Git
- Terminología Básica de Git
- El Modelo de Datos de Git
- Configurando Git
- Configuración Inicial
Módulo 2: Operaciones Básicas de Git
- Creando un Repositorio
- Clonando un Repositorio
- Flujo de Trabajo Básico de Git
- Preparando y Confirmando Cambios
- Inspeccionando Cambios con git diff
- Visualizando el Historial de Confirmaciones
Módulo 3: Ramas y Fusión
- Entendiendo las Ramas
- Creando y Cambiando Ramas
- Fusionando Ramas
- Estrategias de Fusión
- Resolviendo Conflictos de Fusión
- Gestión de Ramas
Módulo 4: Trabajando con Repositorios Remotos
- Entendiendo los Repositorios Remotos
- Agregando un Repositorio Remoto
- Autenticación con Repositorios Remotos
- Obteniendo y Extrayendo Cambios
- Enviando Cambios
- Rastreando Ramas
Módulo 5: Operaciones Avanzadas de Git
- Rebase
- Rebase Interactivo
- Cherry-Picking de Confirmaciones
- Guardando Cambios Temporales
- Etiquetando Confirmaciones
- Revirtiendo Confirmaciones
Módulo 6: Herramientas y Técnicas de Git
- Usando Git Hooks
- Git Bisect
- Git Blame
- Git Log y Alias
- Submódulos de Git
- Múltiples Copias de Trabajo con git worktree
Módulo 7: Estrategias de Colaboración y Flujo de Trabajo
- Forks y Pull Requests
- Revisiones de Código con Git
- Flujo de Trabajo Git Flow
- GitHub Flow
- Trunk Based Development
- Integración Continua con Git
Módulo 8: Mejores Prácticas y Consejos de Git
- Escribiendo Buenos Mensajes de Confirmación
- Manteniendo un Historial Limpio
- Ignorando Archivos con .gitignore
- Atributos de Fichero con .gitattributes
- Mejores Prácticas de Seguridad
- Consejos de Rendimiento
Módulo 9: Solución de Problemas y Depuración
- Problemas Comunes de Git
- Deshaciendo Cambios
- Resolviendo Divergencias con el Remoto
- Recuperando Confirmaciones Perdidas
- Tratando con Repositorios Corruptos
- Técnicas Avanzadas de Depuración
