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
- Què és
git config - Els tres nivells de configuració
- Precedència: qui guanya
- Llegir valors
- Escriure valors
- Esborrar valors
- El fitxer
.gitconfigper dins - Edició directa amb
--edit - Configuració condicional amb
includeIf - Casos especials: valors múltiples i tipus
- Què és
git config
git configgit config és l'ordre que llegeix i escriu la configuració de Git. La seva forma bàsica és:
Un exemple concret, sense entrar encara en què significa el valor:
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 unsetigit 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.
- 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/gitconfigmacOS (Homebrew): /opt/homebrew/etc/gitconfigWindows: C:\Program Files\Git\etc\gitconfig |
| Global | --global |
Tots els repositoris del teu usuari | Linux/macOS: ~/.gitconfig o ~/.config/git/configWindows: 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.
- 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.
- Llegir valors
El valor efectiu d'una clau
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:
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:
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 sistemaAixò é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ó
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çó:
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:
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\.'
- Escriure valors
La forma bàsica ja la coneixem:
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 Ferrerfallaria, perquè Git interpretariaFerrercom un argument extra. - Les claus no distingeixen majúscules a la secció i al nom (
init.defaultBranchiinit.defaultbranchsó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'errorfatal: 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 directoryAcostuma'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:
A Windows cal obrir Git Bash o PowerShell com a administrador.
- Esborrar valors
Per eliminar una clau es fa servir --unset:
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:
Per eliminar una secció sencera:
| 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.
- El fitxer
.gitconfig per dins
.gitconfig per dinsTots 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 = falseRegles 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/mainA 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.
- Edició directa amb
--edit
--editPer a canvis de diverses línies, editar el fitxer directament és molt més còmode que encadenar ordres:
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 actualTambé pots obrir el fitxer amb qualsevol editor, sense passar per Git:
É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:
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.
- Configuració condicional amb
includeIf
includeIfArribem 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:
- Projectes de la seva empresa, que s'han de signar amb
[email protected]. - Projectes personals com
gestor-tasques, que han d'anar amb[email protected].
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-personalI crea el fitxer ~/.gitconfig-personal:
[user]
email = [email protected]Com funciona, pas a pas:
- Git llegeix
~/.gitconfigde dalt a baix i estableixuser.email = [email protected]. - En arribar a
includeIf, comprova si el repositori actual és dins de~/personal/. - Si hi és, llegeix
~/.gitconfig-personalen aquest punt, i el seuuser.emailsobreescriu l'anterior. - 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 servirincludeIf. - 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-feinaAixí, 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:
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.
- 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/internAl fitxer hi queden dues línies a la mateixa secció:
Per llegir-les totes cal --get-all, perquè --get retornaria només l'última:
| 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.excludesFileEls 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 TrueI una clau booleana escrita sense valor s'interpreta com a true:
És vàlid, encara que poc llegible. És millor escriure el valor de manera explícita.
Errors Habituals i Consells
- Oblidar
--globali escriure al repositori sense voler. És l'error més freqüent. Sense nivell explícit,git configescriu 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.editorropull.rebassees desen sense protestar i no fan res. Si una opció no fa efecte, verifica-la ambgit 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 Ferrerdona error o desa nomésAna. 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/configamb 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-scopei localitza de quin fitxer surt. - Consell: desa el teu
~/.gitconfigen 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-origina 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:
- Quin valor té
user.email? - I
user.name? - I
core.editor? - I
core.autocrlf? - Quina ordre executaries per esbrinar de quin fitxer surt cadascun sense obrir-los?
- Si en Bruno executa
git config --unset user.emaildins degestor-tasques, quin serà el nou valor efectiu?
Exercici 2: Perfils separats amb includeIf
La Carla treballa amb tres contextos al mateix portàtil:
- Projectes de la seva empresa, a
~/feina/, amb el correu[email protected]. - Projectes d'un client extern, a
~/clients/acme/, amb el correu[email protected]. - Projectes personals, a
~/codi/, amb el correu[email protected].
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:
- Identifica dos errors diferents en aquesta ordre.
- Escriu l'ordre correcta.
- Escriu les ordres per netejar la clau equivocada que va quedar desada.
- Escriu l'ordre que li hauria permès detectar el problema per si mateixa.
Solucions
Solució a l'Exercici 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. -
user.name=Bruno Salas. Només està definit al global; res no el sobreescriu. -
core.editor=vim. Només és al global. -
core.autocrlf=input. Només és al nivell de sistema, i cap nivell superior no el redefineix, així que s'aplica. -
L'ordre de diagnòstic:
Mostrarà cada clau precedida del seu nivell i de la ruta del fitxer. Per a una sola clau:
- 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
includeIfvan 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
-
Els dos errors:
- La clau està mal escrita:
core.editorramb 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/configdegestor-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.
- La clau està mal escrita:
-
Ordre correcta:
- 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- L'ordre de diagnòstic que hauria revelat el problema:
No hauria retornat res, senyal que la clau correcta no estava definida en cap nivell. I amb:
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
- Què és Git?
- Instal·lant Git
- Terminologia Bàsica de Git
- El Model de Dades de Git
- Configurant Git
- Configuració Inicial
Mòdul 2: Operacions Bàsiques de Git
- Creant un Repositori
- Clonant un Repositori
- Flux de Treball Bàsic de Git
- Preparant i Confirmant Canvis
- Inspeccionant Canvis amb git diff
- Visualitzant l'Historial de Confirmacions
Mòdul 3: Branques i Fusió
- Entenent les Branques
- Creant i Canviant Branques
- Fusionant Branques
- Estratègies de Fusió
- Resolent Conflictes de Fusió
- Gestió de Branques
Mòdul 4: Treballant amb Repositoris Remots
- Entenent els Repositoris Remots
- Afegint un Repositori Remot
- Autenticació amb Repositoris Remots
- Obtenint i Baixant Canvis
- Enviant Canvis
- Rastrejant Branques
Mòdul 5: Operacions Avançades de Git
- Rebase
- Rebase Interactiu
- Cherry-Picking de Confirmacions
- Desant Canvis Temporals
- Etiquetant Confirmacions
- Revertint Confirmacions
Mòdul 6: Eines i Tècniques de Git
- Usant Git Hooks
- Git Bisect
- Git Blame
- Git Log i Àlies
- Submòduls de Git
- Múltiples Còpies de Treball amb git worktree
Mòdul 7: Estratègies de Col·laboració i Flux de Treball
- Forks i Pull Requests
- Revisions de Codi amb Git
- Flux de Treball Git Flow
- GitHub Flow
- Trunk Based Development
- Integració Contínua amb Git
Mòdul 8: Bones Pràctiques i Consells de Git
- Escrivint Bons Missatges de Confirmació
- Mantenint un Historial Net
- Ignorant Fitxers amb .gitignore
- Atributs de Fitxer amb .gitattributes
- Bones Pràctiques de Seguretat
- Consells de Rendiment
Mòdul 9: Resolució de Problemes i Depuració
- Problemes Habituals de Git
- Desfent Canvis
- Resolent Divergències amb el Remot
- Recuperant Confirmacions Perdudes
- Tractant amb Repositoris Corruptes
- Tècniques Avançades de Depuració
