Git és una eina enormement configurable: nom i correu de l'autor, editor de text, comportament en integrar canvis, colors de la sortida, dreceres, credencials i uns quants centenars d'opcions més. Tot això es gestiona amb una única ordre, git config, i s'emmagatzema en fitxers de text pla amb un format senzill.

Aquesta lliçó tracta el mecanisme: on viu la configuració, quins nivells existeixen, qui guanya quan dos nivells diuen coses diferents, com llegir, escriure i esborrar valors, i com mantenir perfils separats per a la feina i els projectes personals. Deliberadament no llistarem encara quins valors convé fixar el primer cop: això és el contingut de la lliçó següent, Configuració Inicial. Aquí aprenem a manejar el comandament; a la següent, quins botons prémer.

L'Ana necessita això ara mateix: el seu portàtil és el mateix que fa servir per a la feina a la seva empresa i per a gestor-tasques, i vol que cada projecte porti el correu adequat sense haver-se'n de recordar cada vegada.

Contingut

  1. Què és git config
  2. Els tres nivells de configuració
  3. Precedència: qui guanya
  4. Llegir valors
  5. Escriure valors
  6. Esborrar valors
  7. El fitxer .gitconfig per dins
  8. Edició directa amb --edit
  9. Configuració condicional amb includeIf
  10. Casos especials: valors múltiples i tipus

  1. Què és git config

git config és l'ordre que llegeix i escriu la configuració de Git. La seva forma bàsica és:

git config <nivell> <secció>.<clau> <valor>

Un exemple concret, sense entrar encara en què significa el valor:

git config --global core.editor "nano"

Desglossament de cada part:

  • git config → l'ordre.
  • --global → el nivell: en quin fitxer s'escriu. Si s'omet, es fa servir el nivell local.
  • core.editor → la clau, formada per una secció (core) i un nom (editor), separats per un punt.
  • "nano" → el valor. S'escriu entre cometes sempre que contingui espais o caràcters especials.

És important entendre que git config no valida les claus. Si escrius core.editorr amb dues erres, Git ho acceptarà sense protestar i l'opció simplement no tindrà cap efecte. És la causa número u de configuracions que "no funcionen".

Nota sobre versions. Des de Git 2.46 existeix una sintaxi alternativa més explícita: git config get, git config set, git config unset i git config list. És equivalent a la clàssica i una mica més llegible. En aquest curs farem servir la sintaxi clàssica amb opcions (--get, --unset, --list) perquè funciona en totes les versions i és la que trobaràs a la documentació existent.

  1. Els tres nivells de configuració

Git llegeix la configuració de diversos fitxers, organitzats en nivells d'abast creixent a decreixent. Els tres principals són:

Nivell Opció Abast Ruta del fitxer
Sistema --system Tots els usuaris de l'equip Linux: /etc/gitconfig
macOS (Homebrew): /opt/homebrew/etc/gitconfig
Windows: C:\Program Files\Git\etc\gitconfig
Global --global Tots els repositoris del teu usuari Linux/macOS: ~/.gitconfig o ~/.config/git/config
Windows: C:\Users\<usuari>\.gitconfig
Local --local Només el repositori actual <repositori>/.git/config

Existeixen a més dos nivells menys habituals que convé conèixer:

Nivell Opció Abast
Worktree --worktree Només la còpia de treball actual, quan se'n fan servir diverses (mòdul 6)
Ordre -c clau=valor Només l'execució d'aquesta ordre concreta

El nivell d'ordre és molt útil per a proves puntuals, perquè no deixa rastre:

git -c user.email="[email protected]" commit -m "Corregeix els estils de la llista"

Fixa't que -c va abans de la subordre, no després: és una opció de git, no de commit.

Quan fer servir cada nivell

Nivell Fes-lo servir per a
Sistema Polítiques de tota la màquina; a la pràctica el toquen els administradors, gairebé mai tu
Global La teva identitat i les teves preferències personals: editor, colors, dreceres
Local El que és específic d'un projecte: un correu diferent, una configuració de finals de línia pròpia

La regla general: comença sempre per --global. Reserva --local per a les excepcions reals d'un projecte concret.

  1. Precedència: qui guanya

Quan diversos nivells defineixen la mateixa clau, guanya el més específic. L'ordre, de menor a major prioritat:

graph TD
    S["/etc/gitconfig<br/>--system<br/>prioritat més baixa"] --> G["~/.gitconfig<br/>--global"]
    G --> L[".git/config<br/>--local"]
    L --> W[".git/config.worktree<br/>--worktree"]
    W --> C["git -c clau=valor<br/>prioritat més alta"]

Un exemple concret amb el portàtil de l'Ana:

Fitxer Valor de user.email
/etc/gitconfig (no definit)
~/.gitconfig [email protected]
gestor-tasques/.git/config [email protected]

Resultat: dins del repositori gestor-tasques, Git farà servir [email protected]. En qualsevol altre repositori del portàtil de l'Ana, [email protected].

Aquesta és exactament l'eina que l'Ana necessitava: la configuració global cobreix el cas majoritari (la seva feina) i la local resol l'excepció (el seu projecte personal). A l'apartat 9 veurem com automatitzar-ho per no haver-se'n de recordar a cada repositori nou.

  1. Llegir valors

El valor efectiu d'una clau

git config --get user.email

Retorna el valor que Git faria servir ara mateix, ja resolta la precedència. També funciona sense --get, que és la forma abreujada més habitual:

git config user.email

Si la clau no està definida, l'ordre no imprimeix res i retorna un codi de sortida diferent de zero. Per donar un valor per defecte quan no existeix:

git config --default "sense definir" --get user.email

Llegir un nivell concret

Combinant --get amb el nivell es consulta un fitxer específic, ignorant els altres:

git config --global --get user.email     # només el fitxer global
git config --local --get user.email      # només el del repositori
git config --system --get user.email     # només el del sistema

Això és fonamental per depurar: si el valor efectiu no és el que esperaves, consultar nivell per nivell revela d'on surt.

Llistar tota la configuració

git config --list

Imprimeix totes les claus actives, una per línia, en format clau=valor:

user.name=Ana Ferrer
[email protected]
core.editor=nano
init.defaultbranch=main
color.ui=auto

I ara l'ordre més útil de tota la lliçó:

git config --list --show-origin

Afegeix davant de cada línia el fitxer del qual procedeix:

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]:equip/gestor-tasques.git

Observa l'última aparició de user.email: quan una clau apareix diverses vegades, l'última línia és la que guanya, perquè els fitxers es processen de menys a més específic. Aquí el valor efectiu és [email protected].

Una variant encara més informativa:

git config --list --show-origin --show-scope

Afegeix també el nom del nivell (system, global, local), cosa que evita haver-lo de deduir a partir de la ruta.

Ordre Què mostra
git config <clau> El valor efectiu
git config --global <clau> El valor en un nivell concret
git config --list Totes les claus actives
git config --list --show-origin Totes les claus i el seu fitxer d'origen
git config --list --show-scope Totes les claus i el seu nivell
git config --get-regexp <patró> Només les claus que coincideixen amb una expressió regular

Aquesta última és molt pràctica quan busques alguna cosa i no en recordes el nom exacte:

# Totes les claus de la secció user
git config --get-regexp '^user\.'

# Tot el relacionat amb àlies
git config --get-regexp '^alias\.'

  1. Escriure valors

La forma bàsica ja la coneixem:

git config --global user.name "Ana Ferrer"

Punts a tenir en compte:

  • Si la clau existeix, se sobreescriu. No hi ha confirmació ni avís.
  • Les cometes són necessàries quan el valor conté espais. git config --global user.name Ana Ferrer fallaria, perquè Git interpretaria Ferrer com un argument extra.
  • Les claus no distingeixen majúscules a la secció i al nom (init.defaultBranch i init.defaultbranch són la mateixa clau), però els valors sí.
  • Si no indiques nivell, es fa servir --local, cosa que requereix ser dins d'un repositori. Fora d'un, Git donarà l'error fatal: not in a git directory.

Aquest últim punt mereix un exemple, perquè és una ensopegada clàssica:

# Dins de ~/projectes/gestor-tasques: escriu a .git/config
git config user.email "[email protected]"

# A l'escriptori, fora de qualsevol repositori: ERROR
git config user.email "[email protected]"
# fatal: not in a git directory

Acostuma't a indicar sempre el nivell de manera explícita. Estalvia confusions difícils de diagnosticar.

Escriure al nivell de sistema

Requereix privilegis d'administrador, perquè el fitxer és fora de la teva carpeta personal:

sudo git config --system core.autocrlf input

A Windows cal obrir Git Bash o PowerShell com a administrador.

  1. Esborrar valors

Per eliminar una clau es fa servir --unset:

git config --global --unset core.editor

Si la clau apareix diverses vegades al mateix fitxer (cosa possible per a certes claus, com veurem a l'apartat 10), --unset fallarà amb el missatge warning: <clau> has multiple values. En aquest cas es fa servir --unset-all:

git config --global --unset-all core.editor

Per eliminar una secció sencera:

git config --global --remove-section alias
Ordre Efecte
--unset <clau> Esborra una clau amb un sol valor
--unset-all <clau> Esborra totes les aparicions de la clau
--remove-section <secció> Esborra la secció completa

Un matís important: esborrar una clau d'un nivell no la deixa "sense valor", sinó que deixa que guanyi el nivell inferior. Si l'Ana esborra user.email del .git/config de gestor-tasques, el correu passarà a ser el del seu ~/.gitconfig, no cap.

I una advertència: --unset sense nivell explícit opera sobre el fitxer local. Si volies netejar el global i oblides --global, esborraràs una cosa que no tocava.

  1. El fitxer .gitconfig per dins

Tots els fitxers de configuració de Git fan servir el mateix format: INI, text pla llegible i editable a mà. Aquest podria ser el ~/.gitconfig de l'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 = false

Regles del format:

  • Les seccions van entre claudàtors: [user], [core]. Corresponen a la part anterior al punt a la clau.
  • Les claus s'escriuen amb nom = valor, indentades amb un tabulador per convenció (Git escriu tabulador; els espais també funcionen).
  • Els comentaris comencen per # o ;.
  • Els valors amb espais no necessiten cometes dins del fitxer, tret que vulguis conservar espais al principi o al final.

La correspondència entre l'ordre i el fitxer és directa:

Ordre Resultat al fitxer
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

Subseccions

Algunes seccions admeten un nivell més, entre cometes. Es veuen sobretot en remots i branques:

[remote "origin"]
	url = [email protected]:equip/gestor-tasques.git
	fetch = +refs/heads/*:refs/remotes/origin/*

[branch "main"]
	remote = origin
	merge = refs/heads/main

A la línia d'ordres, la subsecció va al mig: remote.origin.url, branch.main.remote. Aquestes entrades les escriu Git automàticament en afegir un remot o en configurar el seguiment d'una branca, coses del mòdul 4. Rarament les escriuràs a mà, però saber llegir-les ajuda molt a diagnosticar problemes.

Important: a diferència de les claus, les subseccions sí que distingeixen majúscules. [remote "Origin"] i [remote "origin"] són dos remots diferents.

  1. Edició directa amb --edit

Per a canvis de diverses línies, editar el fitxer directament és molt més còmode que encadenar ordres:

git config --global --edit

Obre ~/.gitconfig a l'editor configurat a core.editor (o al que indiqui la variable d'entorn EDITOR). En desar i tancar, els canvis són immediats: Git llegeix la configuració a cada execució, no la cau.

Les tres variants:

git config --system --edit    # el fitxer del sistema (requereix permisos)
git config --global --edit    # el teu fitxer personal
git config --local --edit     # el del repositori actual

També pots obrir el fitxer amb qualsevol editor, sense passar per Git:

nano ~/.gitconfig
code ~/.gitconfig

És igual de vàlid. L'avantatge de --edit és que no cal recordar la ruta, que varia entre sistemes.

Precaució: si escrius un fitxer de configuració amb un error de sintaxi (un claudàtor sense tancar, per exemple), Git protestarà a totes les ordres que executis a partir d'aquell moment:

fatal: bad config line 12 in file /home/ana/.gitconfig

La solució és tornar a obrir el fitxer i corregir la línia indicada. És reversible i no fa malbé cap repositori, però resulta desconcertant el primer cop.

  1. Configuració condicional amb includeIf

Arribem a la funcionalitat més elegant del sistema de configuració, i la que resol el problema de l'Ana de manera definitiva.

El problema

L'Ana fa servir el mateix portàtil per a dos contextos:

Ho pot resoldre amb configuració local repositori per repositori, però això significa recordar-se'n cada vegada que en clona o en crea un. Tard o d'hora se n'oblidarà i farà confirmacions amb el correu equivocat, cosa que només s'arregla reescrivint l'historial.

La solució: incloure configuració segons la ruta

Git permet incloure un altre fitxer de configuració només si es compleix una condició. La condició més útil és la ruta del repositori.

L'Ana organitza les seves carpetes així:

/home/ana/
├── feina/            ← repositoris de l'empresa
│   └── portal-clients/
└── personal/         ← projectes propis
    └── gestor-tasques/

I edita el seu ~/.gitconfig:

[user]
	name = Ana Ferrer
	email = [email protected]

[core]
	editor = nano

[init]
	defaultBranch = main

# Si el repositori és sota ~/personal/, incloure aquest altre fitxer
[includeIf "gitdir:~/personal/"]
	path = ~/.gitconfig-personal

I crea el fitxer ~/.gitconfig-personal:

[user]
	email = [email protected]

Com funciona, pas a pas:

  1. Git llegeix ~/.gitconfig de dalt a baix i estableix user.email = [email protected].
  2. En arribar a includeIf, comprova si el repositori actual és dins de ~/personal/.
  3. Si hi és, llegeix ~/.gitconfig-personal en aquest punt, i el seu user.email sobreescriu l'anterior.
  4. Si no hi és, la línia s'ignora i el correu d'empresa es manté.

Resultat: l'Ana no se n'ha de recordar mai més. N'hi ha prou de desar cada projecte a la carpeta correcta.

Comprovació:

# Dins de ~/personal/gestor-tasques
git config --get user.email
# → [email protected]

# Dins de ~/feina/portal-clients
git config --get user.email
# → [email protected]

Les condicions disponibles

Condició Es compleix quan
gitdir:<ruta> El repositori és sota aquesta ruta (distingeix majúscules)
gitdir/i:<ruta> Igual, sense distingir majúscules (útil a Windows i macOS)
onbranch:<nom> La branca actual coincideix amb aquest nom o patró
hasconfig:remote.*.url:<patró> Algun remot del repositori coincideix amb aquest patró d'URL

Regles de la ruta a gitdir:

  • Ha d'acabar en / perquè s'apliqui a tot el que hi ha a dins, recursivament. Sense la barra final només coincidiria amb aquesta carpeta exacta, i com que Git compara contra la ruta del directori .git, pràcticament mai no funcionaria com esperes. És l'error més freqüent en fer servir includeIf.
  • Admet ~ per a la carpeta personal.
  • Admet comodins: gitdir:~/clients/*/ coincideix amb qualsevol subcarpeta de primer nivell.

L'última condició, hasconfig:remote.*.url, és especialment potent perquè no depèn de com organitzis les carpetes:

# Qualsevol repositori el remot del qual sigui al servidor de l'empresa
[includeIf "hasconfig:remote.*.url:[email protected]:**"]
	path = ~/.gitconfig-feina

Així, encara que l'Ana cloni un repositori de l'empresa a l'escriptori per pressa, el correu correcte s'aplicarà igualment.

include incondicional

Existeix també la versió sense condició, útil per partir una configuració llarga en peces reutilitzables:

[include]
	path = ~/.gitconfig-alias
	path = ~/.gitconfig-colors

Un patró habitual en equips: mantenir un fitxer d'àlies i colors compartit en un repositori, i que cada persona l'inclogui des del seu ~/.gitconfig sense renunciar a la seva identitat pròpia.

  1. Casos especials: valors múltiples i tipus

Claus amb diversos valors

La majoria de claus tenen un sol valor, però algunes n'admeten diversos. Per afegir sense sobreescriure es fa servir --add:

git config --global --add safe.directory /opt/projectes/comu
git config --global --add safe.directory /srv/repos/intern

Al fitxer hi queden dues línies a la mateixa secció:

[safe]
	directory = /opt/projectes/comu
	directory = /srv/repos/intern

Per llegir-les totes cal --get-all, perquè --get retornaria només l'última:

git config --get-all safe.directory
Ordre Comportament amb valors múltiples
git config <clau> <valor> Sobreescriu tots els valors existents
git config --add <clau> <valor> Afegeix un més
git config --get <clau> Retorna l'últim
git config --get-all <clau> Retorna tots
git config --unset-all <clau> Esborra tots

Tipus de valor

Git interpreta els valors segons el tipus que espera la clau. Pots forçar la interpretació en llegir:

# Interpretar com a booleà: accepta true/false, yes/no, on/off, 1/0
git config --type=bool core.ignorecase

# Interpretar com a enter, admetent sufixos k, m, g
git config --type=int core.bigFileThreshold

# Expandir una ruta amb ~ a la seva forma absoluta
git config --type=path core.excludesFile

Els booleans són flexibles en escriure. Aquestes sis línies són equivalents:

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 True

I una clau booleana escrita sense valor s'interpreta com a true:

[core]
	filemode

És vàlid, encara que poc llegible. És millor escriure el valor de manera explícita.

Errors Habituals i Consells

  • Oblidar --global i escriure al repositori sense voler. És l'error més freqüent. Sense nivell explícit, git config escriu a .git/config, així que la teva preferència s'aplica a un sol projecte i et preguntaràs per què no funciona als altres. Acostuma't a posar el nivell sempre.
  • Escriure malament el nom d'una clau. Git no valida res: core.editorr o pull.rebasse es desen sense protestar i no fan res. Si una opció no fa efecte, verifica-la amb git config --get <clau> i compara-la amb la documentació (git help config).
  • No posar entre cometes els valors amb espais. git config --global user.name Ana Ferrer dona error o desa només Ana. Fes servir cometes sempre que hi hagi espais.
  • Oblidar la barra final a includeIf "gitdir:...". Sense la / final, la condició gairebé mai no es compleix i el fitxer inclòs s'ignora en silenci, sense cap avís. És una fallada especialment difícil de detectar.
  • Editar .git/config amb un error de sintaxi. Deixa Git inservible en aquell repositori fins que es corregeix la línia. No és greu ni destructiu, però espanta. El missatge indica el fitxer i la línia exactes.
  • Confondre els nivells en diagnosticar. Quan un valor no és el que esperes, no ho endevinis: executa git config --list --show-origin --show-scope i localitza de quin fitxer surt.
  • Consell: desa el teu ~/.gitconfig en un repositori propi. És un fitxer de text petit que representa hores d'ajustos. Molts professionals el mantenen versionat juntament amb els seus altres fitxers de configuració personal.
  • Consell: fes servir git config --list --show-origin a cada màquina nova. És el primer que convé mirar en començar en un equip desconegut, i també en depurar comportaments estranys en un ordinador d'empresa, on el nivell de sistema pot portar sorpreses.

Exercicis

Exercici 1: Resoldre la precedència

Al portàtil d'en Bruno, els fitxers de configuració contenen això:

/etc/gitconfig:

[core]
	autocrlf = input
[user]
	email = [email protected]

~/.gitconfig:

[user]
	name = Bruno Salas
	email = [email protected]
[core]
	editor = vim

~/personal/gestor-tasques/.git/config:

[user]
	email = [email protected]

Respon, estant dins del repositori gestor-tasques:

  1. Quin valor té user.email?
  2. I user.name?
  3. I core.editor?
  4. I core.autocrlf?
  5. Quina ordre executaries per esbrinar de quin fitxer surt cadascun sense obrir-los?
  6. Si en Bruno executa git config --unset user.email dins de gestor-tasques, quin serà el nou valor efectiu?

Exercici 2: Perfils separats amb includeIf

La Carla treballa amb tres contextos al mateix portàtil:

El seu nom és sempre "Carla Vidal" i el seu editor sempre nano.

Escriu el contingut complet del seu ~/.gitconfig i dels fitxers auxiliars que necessiti. Després indica quina ordre faria servir per comprovar, des de dins de ~/clients/acme/panell-vendes, que el correu aplicat és el correcte.

Exercici 3: Diagnòstic

L'Ana es queixa que ha configurat el seu editor preferit però Git continua obrint Vim cada vegada que li demana escriure un missatge. Això és el que va executar:

cd ~/personal/gestor-tasques
git config core.editorr "nano"
  1. Identifica dos errors diferents en aquesta ordre.
  2. Escriu l'ordre correcta.
  3. Escriu les ordres per netejar la clau equivocada que va quedar desada.
  4. Escriu l'ordre que li hauria permès detectar el problema per si mateixa.

Solucions

Solució a l'Exercici 1

  1. user.email = [email protected]. El nivell local és el més específic dels tres presents i guanya sobre el global i el de sistema.

  2. user.name = Bruno Salas. Només està definit al global; res no el sobreescriu.

  3. core.editor = vim. Només és al global.

  4. core.autocrlf = input. Només és al nivell de sistema, i cap nivell superior no el redefineix, així que s'aplica.

  5. L'ordre de diagnòstic:

git config --list --show-origin --show-scope

Mostrarà cada clau precedida del seu nivell i de la ruta del fitxer. Per a una sola clau:

git config --show-origin --get user.email
  1. El nou valor efectiu seria [email protected]. Esborrar la clau del nivell local no la deixa buida: simplement deixa que guanyi el nivell següent, que és el global. El del sistema quedaria de nou tapat pel global.

Solució a l'Exercici 2

~/.gitconfig:

[user]
	name = Carla Vidal
	email = [email protected]

[core]
	editor = nano

[init]
	defaultBranch = main

[includeIf "gitdir:~/feina/"]
	path = ~/.gitconfig-empresa

[includeIf "gitdir:~/clients/acme/"]
	path = ~/.gitconfig-acme

~/.gitconfig-empresa:

[user]
	email = [email protected]

~/.gitconfig-acme:

[user]
	email = [email protected]

Decisions que convé justificar:

  • El correu personal va al fitxer principal com a valor per defecte, perquè qualsevol repositori fora de les dues carpetes específiques ha de quedar amb el personal, que és l'opció menys compromesa en cas d'oblit.
  • El nom i l'editor van una sola vegada al fitxer principal, ja que no canvien entre contextos.
  • Totes les rutes acaben en /, condició imprescindible perquè la coincidència sigui recursiva.
  • Els includeIf van al final del fitxer: es processen en ordre, i el que s'inclou després sobreescriu l'anterior.

Comprovació des de ~/clients/acme/panell-vendes:

git config --get user.email
# → [email protected]

# Versió amb diagnòstic, que a més indica el fitxer responsable:
git config --show-origin --get user.email
# → file:/home/carla/.gitconfig-acme	[email protected]

Solució a l'Exercici 3

  1. Els dos errors:

    • La clau està mal escrita: core.editorr amb dues erres. Git l'accepta sense validar i la desa com una clau sense significat, així que no té cap efecte.
    • Falta el nivell --global: en ometre'l, el valor s'hauria escrit només al .git/config de gestor-tasques, és a dir, únicament per a aquest repositori. Fins i tot amb la clau ben escrita, l'editor continuaria sent Vim en tots els altres projectes de l'Ana.
  2. Ordre correcta:

git config --global core.editor "nano"
  1. Netejar la clau equivocada (és al nivell local, perquè així es va escriure):
cd ~/personal/gestor-tasques
git config --local --unset core.editorr

# Comprovar que ja no queda res de la secció core en local
git config --local --list
  1. L'ordre de diagnòstic que hauria revelat el problema:
git config --show-origin --get core.editor

No hauria retornat res, senyal que la clau correcta no estava definida en cap nivell. I amb:

git config --list --show-origin | grep editor

hauria vist la línia file:.git/config core.editorr=nano, on salten a la vista tant l'errata com el nivell equivocat.

Conclusió

Ja domines el mecanisme de configuració de Git. Tot passa per git config, que llegeix i escriu fitxers de text en format INI repartits en tres nivells: sistema (tota la màquina), global (el teu usuari) i local (un repositori), als quals s'hi sumen el nivell de worktree i l'opció -c per a una sola execució. Quan diversos nivells defineixen la mateixa clau, guanya el més específic, i l'ordre git config --list --show-origin --show-scope és l'eina definitiva per saber d'on surt cada valor.

Has vist com llegir (--get, --get-all, --list, --get-regexp), escriure (amb i sense --add), esborrar (--unset, --unset-all, --remove-section) i editar els fitxers directament amb --edit. I has conegut includeIf, la peça que permet mantenir perfils separats —personal, empresa, client— sense haver-se de recordar de res a cada repositori nou, gràcies a condicions sobre la ruta (gitdir:), la branca (onbranch:) o l'URL del remot (hasconfig:).

Saps manejar el comandament; falta decidir quins botons prémer. A l'última lliçó del mòdul, Configuració Inicial, aplicarem tot això al portàtil de l'Ana per deixar-lo llest: la seva identitat, el nom de la branca per defecte, l'editor, el tractament dels finals de línia, el comportament en integrar canvis, el magatzem de credencials i el color de la sortida. En acabar, l'Ana tindrà per fi tot preparat per crear el repositori de gestor-tasques al mòdul 2.

Dominant Git: De Principiant a Avançat

Mòdul 1: Introducció a Git

Mòdul 2: Operacions Bàsiques de Git

Mòdul 3: Branques i Fusió

Mòdul 4: Treballant amb Repositoris Remots

Mòdul 5: Operacions Avançades de Git

Mòdul 6: Eines i Tècniques de Git

Mòdul 7: Estratègies de Col·laboració i Flux de Treball

Mòdul 8: Bones Pràctiques i Consells de Git

Mòdul 9: Resolució de Problemes i Depuració

Mòdul 10: Git al Món Real

© Copyright 2026. Tots els drets reservats