Salta el contingut
 

Introducció a Git

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Què és Git?

Git és un sistema de control de versions lliure i distribuït dissenyat per gestionar xicotets i grans projectes amb rapidesa i eficiència. L'objectiu principal de Git és controlar i gestionar els canvis realitzats en una enorme quantitat de fitxers d'una manera fàcil i eficient.

Git va ser dissenyat en 2005 per Linus Torvalds, creador del kernel del sistema operatiu Linux, i des d'aleshores, s'ha convertit en una eina fonamental i imprescindible en la gestió de codi font en projectes col·laboratius.

Git està basat en repositoris, que s'inicialitzen en un directori concret i contenen tota la informació dels canvis realitzats en tot l'arbre de directoris i fitxers a partir d'aquest directori.

Els principals objectius i característiques de Git són:

  • Control de versions: Git realitza un seguiment de les modificacions als arxius al llarg del temps, la qual cosa permet als desenvolupadors vore i recuperar versions anteriors del seu codi. Aquesta característica és essencial per a treballar en equips i per a solucionar problemes o errors.
  • Distribuït: Cada còpia d'un repositori Git conté tot l'historial de canvis i pot operar de manera independent. Això facilita el treball fora de línia i la col·laboració en equips distribuïts.
  • Branca i fusió: Git facilita la creació de branques (branching) per a desenvolupar característiques o solucionar problemes sense afectar la branca principal. Després, pots fusionar (merge) les branques de nou en la branca principal quan estiguen a punt.
  • Gestió de conflictes: Git ofereix eines per a gestionar conflictes en cas que dues o més persones hagen realitzat canvis en la mateixa part del codi. Els desenvolupadors poden resoldre aquests conflictes manualment.
  • Col·laboració: Git facilita la col·laboració en projectes de codi obert o en equips, ja que permet a múltiples persones treballar en el mateix projecte de manera eficient. Plataformes com GitHub, GitLab i Bitbucket s'utilitzen comunament per a allotjar repositoris Git en línia i col·laborar en projectes.
  • Codi obert i gratuït: Git és de codi obert i gratuït, la qual cosa significa que qualsevol pot utilitzar-lo sense cost i contribuir al desenvolupament de l'eina.

Per què la terminal?

En aquests apunts, utilitzarem la terminal per a interactuar amb Git, però això no significa que siga l'única manera de fer-ho. De fet, pràcticament tots els entorns de desenvolupament moderns tenen integració amb Git, la qual cosa permet realitzar les mateixes operacions que proporciona la terminal, però de manera més visual i intuïtiva.

No obstant això, és important conéixer com funcionen les comandes de Git en la terminal, per diferents raons:

  • Portabilitat: La terminal és un entorn comú en tots els sistemes operatius i en qualsevol entorn de desenvolupament.
  • Flexibilitat: La terminal permet realitzar operacions més avançades i personalitzades que les interfícies gràfiques.
  • Comprensió: Permet entendre com funcionen les comandes de Git i els processos que realitza en el sistema.

Inicialització d'un repositori (git init)

Per a començar a utilitzar Git en un projecte, primer cal inicialitzar un repositori en un directori concret.

git init [<directory>]

  • directory: Directori on es vol inicialitzar el repositori. Si no s'especifica, s'utilitza el directori actual.

Aquesta comanda crea un directori ocult anomenat .git que conté tota la informació relativa al Repositori Local.

Documentació oficial de Git

git init

Advertència

Tingues en compte els següents aspectes importants a l'hora d'inicialitzar un repositori amb git init:

  • No has d'inicialitzar el repositori cada vegada que vulgues treballar en ell. L'estat del repositori s'emmagatzema d'una manera persistent en el directori ocult .git.

  • Si inicialitzes un repositori en un directori que ja conté un repositori, es crearà un nou repositori i el contingut del directori .git es sobreescriurà, eliminant tota la informació anterior.

  • Encara que és possible1, no és recomanable inicialitzar un repositori en un directori contingut dins d'un altre repositori.

Exemple: Inicialització d'un repositori
jpuigcerver@fp:~ $ mkdir git_introduccio
jpuigcerver@fp:~ $ cd git_introduccio
jpuigcerver@fp:~/git_introduccio $ ls -a # (1)!
.  ..
jpuigcerver@fp:~/git_introduccio $ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositoris, which will suppress this warning, call:
hint:
hint: git config --global init.dafaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /home/jpuigcerver/git_introduccio/.git/
jpuigcerver@fp:~/git_introduccio (master) $ git branch -m main
jpuigcerver@fp:~/git_introduccio (main) $ ls -a # (2)!
.  ..  .git/
jpuigcerver@fp:~/git_introduccio (main) $ git status
On branch main

No commits yet

Nothing to commit (create/copy files and use "git add" to track)
  1. L'opció -a mostra tots els fitxers, inclosos els ocults que comencen amb un punt.
  2. S'ha creat el directori ocult .git que conté tota la informació del repositori.

L'ordre git status ens mostra l'estat actual del nostre repositori. Podem observar que estem en la branca main i que de moment no s'ha realitzat cap canvi.

Note

S'ha canviat el nom de la branca principal de master a main per a seguir les recomanacions de la comunitat de desenvolupament.

Vegeu: Regarding Git and Branch Naming

Eliminar un repositori

Per a eliminar un repositori de Git, simplement cal eliminar el directori ocult .git.

rm -rf .git
  • -r: Opció per a eliminar de manera recursiva.
  • -f: Opció per a forçar l'eliminació sense confirmació dels elements protegits contra escriptura.

Perill

Sigues extremadament cautelós amb l'ús de la comanda rm -rf, ja que elimina tots els fitxers, inclosos aquells protegits contra escriptura.

Exemple: Eliminar un repositori
jpuigcerver@fp:~/git_introduccio (main) $ ls -a
.  ..  .git
jpuigcerver@fp:~/git_introduccio (main) $ rm -rf .git
jpuigcerver@fp:~/git_introduccio $ git status
fatal: not a git repository (or any of the parent directories): .git

Estructura d'un repositori de Git

En aquesta introducció, ens centrarem en com funcionen els repositoris de Git d'una manera local, on encara no haurem connectat cap repositori remot.

Abans que res, hem de conéixer l'estructura d'un repositori de Git.

Components d'un repositori de Git

Figura 1. Components d'un repositori de Git.

En la figura anterior podem observar el que es coneix com Entorn de desenvolupament o Development Environment, Aquesta part està present localment en el teu dispositiu on realitzaràs els canvis i desenvolupament del teu projecte.

D'una altra banda, està el Repositori Remot, que normalment s'allotja a un servidor accessible per tots els desenvolupadors.

Dins de l'Entorn de desenvolupament trobem els següents components:

  • Directori de treball o Working directory: Directori o carpeta del sistema on s'emmagatzema localment els continguts del repositori.
  • Àrea de preparació o Staging Area: Àrea que s'utilitza per indicar quins canvis volen ser confirmats.
  • Repositori local o Local repository: Repositori emmagatzemat localment on es queden registrats totes les versions i canvis realitzats en els fitxers del repositori, així com la informació de les branques i les etiquetes.

Flux de treball

Quan treballes amb un projecte de Git, els canvis es realitzen sobre el Directori de treball. Aquests canvis poden ser:

  • Crear un nou fitxer. El nou fitxer comença en l'estat Untracked, és a dir, no està sotmès a seguiment per Git.
  • Modificar un fitxer amb seguiment. El fitxer modificat es trobarà en l'estat Modified.
  • Eliminar un fitxer amb seguiment. El fitxer eliminat es trobarà en l'estat Deleted.

Si executem l'ordre git status, ens mostrarà l'estat actual dels fitxers amb els tres estats anteriors de color roig.

Aquests canvis no formen part del repositori. Abans, cal afegir-los a l'Àrea de preparació amb la comanda git add, que canviarà l'estat dels fitxers Staged (mostrat en color verd amb git status).

Per últim, tots els canvis de l'Àrea de preparació es poden confirmar i fer efectius en el Repositori local amb la comanda git commit.

Flux de treball en un repositori de Git

Figura 2. Flux de treball en un repositori de Git.

Informació

La comanda git restore es presenta a l'apartat Descartar canvis.

Documentació oficial de Git

Afegir fitxers a l'Àrea de Preparació (git add)

Consell

És recomanable crear un fitxer README.md en tots els projectes per a descriure el seu propòsit, com s'utilitza i qualsevol altra informació rellevant.

Afegim el primer fitxer README.md al nostre repositori amb el contingut:

# 01 - Introducció a Git
Estem aprenent a utilitzar Git!
jpuigcerver@fp:~/git_introduccio (main) $ echo "# 01 - Introducció a Git" > README.md
jpuigcerver@fp:~/git_introduccio (main) $ echo "Estem aprenent a utilitzar Git!" >> README.md
jpuigcerver@fp:~/git_introduccio (main) $ cat README.md
# 01 - Introducció a Git
Estem aprenent a utilitzar Git!

Crea el fitxer README.md amb el contingut anterior en el directori git_introduccio.

Una vegada creat el fitxer, comprovem l'estat del nostre repositori amb git status.

Vegem que Git reconeix aquest nou fitxer,que ara mateix resideix en el Directori de treball.

La comanda git status ens mostra que no s'està realitzant cap seguiment del fitxer README.md, que es troba en l'estat Untracked.

jpuigcerver@fp:~/git_introduccio (main) $ git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        README.md

Nothing added to commit but untracked files present (use "git add" to track)

Fitxer sense seguiment

Figura 3. Fitxer sense seguiment (untracked).

Per afegir els canvis al nostre repositori, el següent pas és afegir els canvis a l'Àrea de Preparació amb l'ordre git add. Aquesta comanda permet especificar quins canvis es desitja afegir.

La sintaxi és la següent:

git add [--all] <path>
  • path: Ruta del fitxer o directori que es vol afegir a l'Àrea de Preparació.
  • --all: Opcional. Afegix tots els fitxers modificats i eliminats a l'Àrea de Preparació.
jpuigcerver@FP:~/git_introduccio (main) $ git add README.md
jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md

Vegem com el fitxer README.md ha passat a l'estat Staged i està preparat per a ser confirmat.

Fitxer a l'Àrea de Preparació

Figura 4. Fitxer a l'Àrea de Preparació (staged).

Confirmar canvis (git commit)

Una vegada afegits tots els canvis a l'Àrea de Preparació, ja podem confirmar-los mitjançant l'ordre git commit.

git commit [-a] [-m "<message>"]
  • -a: Opcional. Afegeix tots els fitxers modificats i eliminats a l'Àrea de Preparació (sense necessitat de git add).
  • -m "<message>": Opcional. Missatge que descriu el canvi realitzat en el commit.

Warning

Si no s'especifica el missatge amb -m, s'obrirà l'editor per defecte(1) per a introduir el missatge del commit.

  1. ViM per defecte. Pot ser configurat:
    git config --global core.editor <editor>
    

Estat del repositori de Git abans de fer un commit

Figura 5. Estat del repositori de Git abans de fer un _commit`.

Aquesta ordre crea un nou commit, que és una instantània de l'estat actual dels fitxers del repositori i que conté tota la informació relativa als canvis realitzats.

Cadascun dels commit conté la següent informació:

  • Autor: Persona que ha realitzat el commit.
  • Correu electrònic: Correu electrònic de l'autor.
  • Data: Data i hora en què s'ha realitzat el commit.
  • Missatge: Descripció dels canvis realitzats en el commit.
  • Identificador o hash: Codi únic generat automàticament que identifica el commit.
  • Canvis: Llista de fitxers modificats, afegits o eliminats en el commit i els canvis realitzats en ells respecte de la versió anterior.

Per tant, abans de realitzar un commit, és necessari configurar el nom i el correu electrònic de l'autor.

git config --global user.name <name>
git config --global user.email <email>
jpuigcerver@FP:~/git_introduccio (main) $ git config --global user.name "Joan Puigcerver Ibáñez"
jpuigcerver@FP:~/git_introduccio (main) $ git config --global user.email "j.puigcerveribanez@edu.gva.es"

Amb aquesta informació configurada, ja podem realitzar el nostre primer commit.

jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md
jpuigcerver@FP:~/git_introduccio (main) $ git commit -m "Added README.md"
[main (root-commit) 8e70293] Added README.md
 1 file changed, 2 insertions(+)
 create mode 100644 README.md
jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

nothing to commit, working tree clean

Vegem que l'estat del nostre repositori ha canviat i ja no hi ha canvis pendents de confirmar. A més, s'ha creat el primer commit amb el missatge Added README.md i identificador 8e70293.

Estat del repositori de Git després de fer un commit

Figura 6. Estat del repositori de Git després de fer un commit.

Podem consultar la informació del nou commit amb l'ordre git show.

jpuigcerver@FP:~/git_introduccio (main) $ git show 8e70293
commit 8e702933d5dbec9ee71100a1599ae4491085e1aa (HEAD -> main)
Author: Joan Puigcerver Ibáñez <j.puigcerveribanez@edu.gva.es>
Date:   Fri Oct 13 16:06:59 2023 +0200

    Added README.md

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6d747b3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+# 01 - Introducció a Git
+Estem aprenent a utilitzar Git!

Diferències entre versions (git diff)

Una ferramenta molt útil de Git és git diff, que permet comparar les diferències entre els canvis realitzats en el Directori de treball o l'Àrea de Preparació respecte del Repositori local.

La sintaxi amb les opcions bàsiques es:

git diff [--staged] [<path>]

  • --staged: Opcional. Mostra les diferències entre l'Àrea de Preparació i el Repositori local. Si no s'indica, es compararan les diferències entre el Directori de treball i el Repositori local.
  • <path>: Opcional. Fitxer o directori sobre el qual es vol comparar les diferències. Si no s'indica, es compararan totes les diferències.

Documentació oficial de Git

git diff

Resum de git diff

Figura 7. Resum de git diff.

Interpretació de diff

jpuigcerver@FP:~/git_introduccio (main) $ git diff
diff --git a/README.md b/README.md
index 6d747b3..f3b3b3e 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # 01 - Introducció a Git
 Estem aprenent a utilitzar Git!
+Aquesta és una línia nova

El format d'un diff és el següent:

  • diff --git a/README.md b/README.md: Mostra els fitxers comparats.
    • a/README.md: Fitxer original.
    • b/README.md: Fitxer modificat.
  • index 6d747b3..f3b3b3e 100644: Mostra el hash dels fitxers comparats i els permisos.
  • --- a/README.md: Mostra la ruta del fitxer original.
  • +++ b/README.md: Mostra la ruta del fitxer modificat.
  • @@ -1,2 +1,3 @@: Mostra la posició de les línies modificades.
    • -1,2: Els canvis comencen a la línia 1 i afecten 2 línies en el fitxer original.
    • +1,3: Els canvis comencen a la línia 1 i afecten 3 línies en el fitxer modificat.

Després, es mostren les línies modificades:

  • -: Línia eliminada.
  • +: Línia afegida.

En aquest cas, s'ha afegit la línia Aquesta és una línia nova al fitxer README.md.

Exemple: Diferències entre el Directori de treball i el Repositori local

Observem les diferències entre el fitxer README.md del Directori de treball i el Repositori local.

jpuigcerver@FP:~/git_introduccio (main) $ echo "Aquesta és una línia nova" >> README.md
jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")
jpuigcerver@FP:~/git_introduccio (main) $ git diff
diff --git a/README.md b/README.md
index 6d747b3..f3b3b3e 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # 01 - Introducció a Git
 Estem aprenent a utilitzar Git!
+Aquesta és una línia nova
Exemple: Diferències entre l'Àrea de Preparació i el Repositori local

Observem les diferències entre el fitxer README.md de l'Àrea de Preparació i el Repositori local.

jpuigcerver@FP:~/git_introduccio (main) $ git add README.md
jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md

jpuigcerver@FP:~/git_introduccio (main) $ git diff --staged
diff --git a/README.md b/README.md
index 6d747b3..f3b3b3e 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # 01 - Introducció a Git
 Estem aprenent a utilitzar Git!
+Aquesta és una línia nova

Descartar canvis (git restore)

Una altra ferramenta útil de Git és git restore, que permet descartar els canvis realitzats en els fitxers del Directori de treball o l'Àrea de Preparació.

La sintaxi amb les opcions bàsiques és:

git restore [--staged] <path>

  • --staged: Opcional. Descarta els canvis realitzats en l'Àrea de Preparació. Si no s'indica, es descartaran els canvis realitzats en el Directori de treball.
  • <path>: Opcional. Fitxer o directori sobre el qual es vol descartar els canvis.

Podeu consultar la Figura 2 per a veure un resum del comportament de git restore.

Documentació oficial de Git

git restore

Perill

La comanda git restore descarta els canvis realitzats en els fitxers sense possibilitat de recuperar-los.

Exemple: Descartar canvis en l'Àrea de Preparació

Continuant amb l'exemple anterior, descartem els canvis realitzats en el fitxer README.md de l'Àrea de Preparació.

jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md

jpuigcerver@FP:~/git_introduccio (main) $ git diff --staged
diff --git a/README.md b/README.md
index 6d747b3..f3b3b3e 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # 01 - Introducció a Git
 Estem aprenent a utilitzar Git!
+Aquesta és una línia nova
jpuigcerver@FP:~/git_introduccio (main) $ git restore --staged README.md
jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md
Exemple: Descartar canvis en el Directori de treball

Descartem els canvis realitzats en el fitxer README.md del Directori de treball.

Danger

Aquesta comanda descartarà els canvis realitzats en el fitxer README.md sense possibilitat de recuperar-los.

jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")
jpuigcerver@FP:~/git_introduccio (main) $ git diff
diff --git a/README.md b/README.md
index 6d747b3..f3b3b3e 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # 01 - Introducció a Git
 Estem aprenent a utilitzar Git!
+Aquesta és una línia nova
jpuigcerver@FP:~/git_introduccio (main) $ git restore README.md
jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

nothing to commit, working tree clean

Històric de canvis (git log)

Git registra tots els canvis confirmats (commit) en el Repositori local. L'històric de canvis es pot consultar amb l'ordre git log.

git log [options]

Documentació oficial de Git

Consulta totes les opcions a git log

Exemple: Històric de canvis

Modifiquem novament el fitxer README.md i realitzem un nou commit.

jpuigcerver@FP:~/git_introduccio (main) $ echo "Aquesta és una altra línia" >> README.md
jpuigcerver@FP:~/git_introduccio (main) $ git commit -a -m "Added another line to README.md"# (1)!
[main c9fc6c8] Added another line to README.md
 1 file changed, 1 insertions(+)
  1. Amb -a afegim tots els canvis realitzats al fitxer README.md a l'Àrea de Preparació sense necessitat de git add.

Consultem l'històric de canvis amb git log.

jpuigcerver@FP:~/git_introduccio (main) $ git log
commit c9fc6c856c2d52744b85a6f8d92feac496e60bd6 (HEAD -> main)
Author: Joan Puigcerver <j.puigcerveribanez@edu.gva.es>
Date:   Mon Oct 16 11:43:20 2023 +0200

    Added another line to README.md

commit 8e702933d5dbec9ee71100a1599ae4491085e1aa
Author: Joan Puigcerver <j.puigcerveribanez@edu.gva.es>
Date:   Fri Oct 13 16:06:59 2023 +0200

    Added Readme.md

S'observa tota la informació dels commit realitzats, com l'autor, la data, el missatge i l'identificador.

L'ordre git log admet moltes opcions per a personalitzar com es mostren els commit i la seua informació.

Una possible combinació d'opcions per visualitzar l'històric de canvis de manera més compacta i intuïtiva és:

git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)'
Exemple: Històric de canvis compacte
jpuigcerver@FP:~/git_introduccio (main) $ git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)'
* c9fc6c8 - (2 minutes ago) Added another line to README.md - Joan Puigcerver (HEAD -> main)
* 8e70293 - (3 days ago) Added Readme.md - Joan Puigcerver

No obstant això, no és pràctic recordar aquesta comanda. Per això, podem configurar un alias per a simplificar la seua crida.

git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)'"
git config --global alias.lga "lg --all"
Exemple: Històric de canvis compacte amb àlies

Després de configurar l'àlies git lg per a l'ordre anterior, podem cridar-lo de la següent manera:

jpuigcerver@FP:~/git_introduccio (main) $ git lg
* c9fc6c8 - (2 minutes ago) Added another line to README.md - Joan Puigcerver (HEAD -> main)
* 8e70293 - (3 days ago) Added README.md - Joan Puigcerver

Configuració (git config)

Git permet configurar diferents paràmetres per a personalitzar el seu comportament mitjançant l'ordre git config.

La configuració de Git es pot realitzar a tres nivells, on els paràmetres d'un nivell superior poden ser sobreescrits per un nivell inferior:

  • Sistema --system: Configuració de Git per a tots els usuaris del sistema. La configuració es realitza en un fitxer gitconfig situat a:

    /etc/gitconfig
    

    Carpeta de la instal·lació de Git:

    C:\Program Files\Git\gitconfig
    
  • Usuari --global: Configuració de Git per a un usuari concret. La configuració es realitza en un fitxer gitconfig situat a la carpeta personal de l'usuari:

    /home/<username>/.gitconfig
    
    C:\Users\<username>\.gitconfig
    
  • Repositori --local: Configuració de Git per a un repositori concret. La configuració es realitza en un fitxer config situat a la carpeta .git del repositori.

    <path_to_repository>/.git/config
    

La sintaxi d'aquesta comanda és la següent:

git config [--local | --global | --system] <key> [<value>]
  • --local, --global, --system: Opcional. Indica el nivell de configuració. Si no s'indica, per defecte és --local.
  • <key>: Clau de configuració que es vol establir o consultar.
  • <value>: Opcional. Valor de la configuració. Si no s'indica, es mostrarà el valor actual de la clau de configuració.

Fixa't

Fixeu-vos que ja hem utilitzat aquesta comanda per configurar els següents aspectes:

  • El nom (user.name) i el correu electrònic (user.email) de l'autor dels commit
  • L'editor per defecte (core.editor).
Exemple: Consultar el nom i correu electrònic configurats
jpuigcerver@FP:~/git_introduccio (main) $ git config --global user.name
Joan Puigcerver Ibáñez
jpuigcerver@FP:~/git_introduccio (main) $ git config --global user.email
j.puigcerveribanez@edu.gva.es

Modificació del fitxer de configuració

Per a modificar el fitxer de configuració de l'usuari, podem utilitzar l'ordre git config --edit, que obrirà l'editor de text per defecte per a editar el fitxer de configuració del nivell triat.

git config [--local | --global | --system] --edit
  • --local, --global, --system: Opcional. Indica el nivell de configuració. Si no s'indica, per defecte és --local.
Exemple: Fitxer de configuració de l'usuari (--global)

jpuigcerver@FP:~/git_introduccio (main) $ git config --global --edit
~/.gitconfig
[core]
    editor = code --wait # Editor per defecte

[init]
    defaultBranch = main # Nom de la branca principal per defecte

[user]
    name = Joan Puigcerver Ibáñez
    email = j.puigcerveribanez@edu.gva.es

[alias]
    lg = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)'
    lga = lg --all

Ignorar fitxers (.gitignore)

En un projecte, hi ha fitxers que no volem incloure en el repositori, com arxius temporals, binaris o fitxers de configuració. Git permet ignorar aquests fitxers mitjançant el fitxer .gitignore, que conté una llista de patrons de fitxers els quals Git no tindrà en compte.

Aquest fitxer pot estar situat en qualsevol directori del repositori i Git ignorarà per a tots els fitxers i subdirectoris d'aquest que complisquen algun dels patrons especificats.

Documentació

.gitignore – Documentació oficial de Git

Llista de patrons:

Exemple: Ignorar fitxers
.gitignore
# ignore ALL .log files
*.log

# ignore ALL files in ANY directory named temp
temp/
jpuigcerver@FP:~/git_introduccio (main) $ mkdir temp
jpuigcerver@FP:~/git_introduccio (main) $ touch temp/file.txt
jpuigcerver@FP:~/git_introduccio (main) $ git status
On branch main

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        temp/file.txt

nothing added to commit but untracked files present (use "git add" to track)
jpuigcerver@FP:~/git_introduccio (main) $ echo "temp/" > .gitignore
jpuigcerver@FP:~/git_introduccio (main) $ git status # (1)!
On branch main

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore

nothing added to commit but untracked files present (use "git add" to track)
  1. El fitxer temp/file.txt no apareix en l'estat del repositori després de crear el fitxer .gitignore.

  1. Aquests repositoris es coneixen com a Submòduls, que està fora de l'abast d'aquest curs. 

📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.