On this page
Introducció
Git és un sistema de control de versions descentralitzat.
De totes maneres, és habitual allotjar el codi en un repositori per compartir codi amb altres, encara que només sigui amb tu mateix i els teus diferents equips i entorns d’execució.
A GitLab un repositori forma part d’un projecte i no pot existir sense un projecte GitLab.
A través del projecte configura les opcions del teu repositori.
Usuari
Si mai t’has registrat a Gitlab, el primer que has de fer és anar a aquest enllaç: Users - Sign In
I a continuació registrar-te:

Al final tindras un usuari amb la teva identitat:

Projecte
Crea un nou projecte:

Escull Create blank project:

Omple les dades que et demanen.
L’slug del projecte forma part de l’URL del projecte.

Ja pots crear el projecte!
Com que ha deixat l’opció per defecte d’inicialitzar el repositori amb un fitxer README, aquest s’ha creat amb un commit inicial.

SSH
Per defecte, quan crees un repositori aquest és privat.
Per accedir a un repositori remot privat, o modificar el contingut de qualsevol repositori (sigui públic o privat) necessites un sistema d’autenticació.
Un clau “ssh” et permet identificar-te amb un servidor remot.
Genera un parell de claus SSH tal com s’explica a: SSH
ssh-keygenPrem
Fes clic a la teva icona d’usuari i selecciona Edit Profile
A continuació selecciona SSH Keys.

Mira quina és la clau pública que has generat (ajuda’t amb la tecla
gc .ss i .
gc .\.ssh\id_ed25519.pubssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFJgYeQKuRlSp6BOSaVriPqJ5IKakDpHLfP4csIN8Ft/ david@eliteAfegeix la teva clau pública a GitLab:

Verifica que et pots autenticar amb els servidors de Gitlab:
ssh -T git@gitlab.comWelcome to GitLab, @ddemingo!Local
Ves al projecte que has creat abans:

Copia l’URL del projecte per clonar amb SSH:

Obre una sessió de terminal amb Powershell.
Clona el repositori en la màquina local amb la teva clau SSH:
git clone git@gitlab.com:ddemingo/poesia.gitCloning into 'poesia'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.Ja pots escriure la primera estrofa de la teva primera poesia:
cd poesia
notepad ara-mateix.txtFes el commit corresponent:
git add .\ara-mateix.txt
git commit -a -m "Afegit primera estrofa del poema 'Ara mateix' de Miquel Martí i Pol"[main ade00cb] Afegit primera estrofa del poema 'Ara mateix' de Miquel Martí i Pol
1 file changed, 5 insertions(+)
create mode 100644 ara-mateix.txtEl repositori local està configurat amb el repositori remot de Gitlab:
git remote -vorigin git@gitlab.com:ddemingo/poesia.git (fetch)
origin git@gitlab.com:ddemingo/poesia.git (push)A continuació actualitza els teus commits al repositori remot de Gitlab:
git pushEnumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 24 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 472 bytes | 472.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To gitlab.com:ddemingo/poesia.git
f7180ad..ade00cb main -> mainEn qualsevol moment pots enviar tots els canvis que has fet al repositori remot.
Distributed
A continuació treballarem amb el mateix projecte en dues màquines distintes.
WSL
Crea una màquina amb Windows Subsystem for Linux (WSL) o Isard.
Crea una clau ssh a la màquina nova.
Show solution
Afegeix la clau pública a Gitlab.
Clone el projecte:
Show solution
Afegeix una nova estrofa al poema ara-mateix.txt:
Show solution
De res a poc, i sempre amb vent de cara,
quin llarg camí d'angoixa i de silencis.
I som on som; més val saber-ho i dir-ho
i assentar els peus en terra i proclamar-nos
hereus d'un temps de dubtes i renúncies
en què els sorolls ofeguen les paraules
i amb molts miralls mig estrafem la vida.Fes un commit del canvi i un push al repositori remot:
Show solution
Crea el poema la-vaca-cega.txt amb la primera estrofa:
Show solution
Topant de cap en una i altra soca,
avançant d'esma pel camí de l'aigua,
se'n ve la vaca tota sola. És cega.Afegeix el poema a git i fes només un commit:
Show solution
Si fas un git status pots veure que la branca main està un commit per davant de origin/main:
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)Fes un push al repositori remot per publicar els canvis:
Show solution
git pushFetch
Windows
Mira que diu git de l’estat del repositori en la màquina windows:
git statusPots veure que la branca main està sincronitzada amb origin/main:
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree cleanEncara que tu saps que no és així perquè tu has fet uns canvis amb la màquina WSL.
Fes un fetch de la branca origin/main per veure si hi ha canvis nous al repositori remot.
git fetchFrom gitlab.com:ddemingo/poesia
ade00c..3f903a5 main -> origin/mainPots veure que es baixen els nous commits del repositori remot.
Però aquests canvis no són visibles perquè el HEAD segueix apuntant al mateix commit:
git logcommit ade00cb5328c1e91fd2d194ff315e7f25653f27c
Author: David de Mingo <david@optersoft.com>
Date: Fri Oct 3 14:25:48 2025 +0200
Afegit primera estrofa del poema 'Ara mateix' de Miquel Martí i PolSi indiques a git log que a d’utilitzar el punter origin/main pots veure els nous canvis:
git log origin/maincommit 3f903a57bfc9d3671396c12263991bccc27c34a6 (origin/main, origin/HEAD)
Author: David de Mingo <david@optersoft.com>
Date: Thu Oct 23 12:30:05 2025 +0200
Afegit poema 'la vaca cega' amb la primera estrofa
commit 232a67578f14faf7b44728a40a94275b36326d0e (HEAD -> main)
Author: David de Mingo <david@optersoft.com>
Date: Thu Oct 23 11:58:50 2025 +0200
Afegit nova estrofa a 'Ara mateix'Pots canviar a origin/main amb la comanda git checkout:
git checkout origin/main
lsMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 23/10/2025 12:05 500 ara-mateix.txt
-a---- 23/10/2025 13:02 114 la-vaca-cega.txt
-a---- 23/10/2025 12:05 6205 README.mdPots tornar a main amb la comanda git checkout:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 23/10/2025 13:07 196 ara-mateix.txt
-a---- 23/10/2025 12:05 6205 README.mdMerge
Si els canvis et semblen bé pots fer un merge:
Després del merge main i origin/main tornen a coincidir:
I si ara fas un git log pots veure que tots els punters apunten al mateix commit:
git log n -1commit 3f903a57bfc9d3671396c12263991bccc27c34a6 (HEAD, origin/main, origin/HEAD)
Author: David de Mingo <david@optersoft.com>
Date: Thu Oct 23 12:30:05 2025 +0200
Afegit poema 'la vaca cega' amb la primera estrofaPull
Si estas segur dels canvis i no vols revisar res, pots utilitzar la comanda git pull que fa un fetch i un merge a la vegada:
Afegeix una nova estrofa al poema la-vaca-cega.txt:
Show solution
D'un cop de roc llançat amb massa traça,
el vailet va buidar-li un ull, i en l'altre
se li ha posat un tel: la vaca és cega.Fes un commit del canvi i un push al repositori remot:
Show solution
To gitlab.com:ddemingo/poesia.git
3f903a5..701a314 main -> mainAra anirem de pressa sense verificar res amb la comanda git pull:
Show solution
From gitlab.com:ddemingo/poesia
3f903a5..701a314 main -> origin/main
Updating 3f903a5..701a314Conflicte
Fina ara tot ha anat molt bé perquè no hem fet canvis que s’encavalquin.
WSL
Modifica el fitxer la-vaca-cega.txt:
Ve a abeurar-se a la font com ans solia,
mes no amb el ferm posat d'altres vegades
ni amb ses companyes, no; ve tota sola.Fes un commit del canvi i un push al repositori remot.
Windows
Modifica el fitxer la-vaca-cega.txt:
Ve a abeurar-se a la font com ans solia,
mes no amb el ferm posat d'altres vegades
ni amb ses companyes, no; ve tota sola.Fes un commit del canvi i un push al repositori remot.
git commit -a -m "Afegida estrofa a 'la vaca cega'"
git push ! [rejected] main -> main (fetch first)
error: failed to push some refs to 'gitlab.com:ddemingo/poesia.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.Git rebutja fer el push perquè el repositori remot té un commit que apunta al mateix commit que tens referenciat amb origin/main.
git log -n 2commit ccadaac446c970578a09f04b919ab0cbea152c02 (HEAD -> main)
Author: David de Mingo <david@optersoft.com>
Date: Thu Oct 23 13:33:59 2025 +0200
Afegida estrofa a 'la vaca cega'
commit 701a314c792e0728d9f5d4e368ff9e6045b55c9b (origin/main, origin/HEAD)
Author: David de Mingo <david@optersoft.com>
Date: Thu Oct 23 13:23:17 2025 +0200El que has de fer en aquesta situació és:
- Crear una branca nova per conservar els teus canvis.
- Un “reset” de la teva branca principal a l’estat en què està la branca
origin/main - Un pull del repositori remot
git branch conflict
git reset --hard origin/main
git pullResoldre el conflicte
Fes un merge de la branca conflict
git merge conflictEl resultat de la comanda ens indica que tenim un conflicte en el fitxer la-vaca-cega.txt que git no pot resoldre de manera automàtica:
Auto-merging la-vaca-cega.txt
CONFLICT (content): Merge conflict in la-vaca-cega.txt
Automatic merge failed; fix conflicts and then commit the result.Que git no sàpida resoldre el conflicte no vol dir que no sàpiga exactament quin és el conflicte.
Edita el fitxer la-vaca-cega.txt
Topant de cap en una i altra soca,
avançant d'esma pel camí de l'aigua,
se'n ve la vaca tota sola. És cega.
D'un cop de roc llançat amb massa traça,
el vailet va buidar-li un ull, i en l'altre
se li ha posat un tel: la vaca és cega.
<<<<<<< HEAD
Ve a abeurar-se a la font com ans solia,
mes no amb el ferm posat d'altres vegades
ni amb ses companyes, no; ve tota sola.
=======
Ses companyes, pels cingles, per les comes,
el silenci dels prats i en la ribera,
fan dringar l'esquellot, mentre pasturen
l'herba fresca a l'atzar... ella cauria.
>>>>>>> conflictGit indica clarament en el fitxer la-vaca-cega.txt quin és el conflicte: la tercera estrofa és diferent.
Resol el conflicte preservant el que ha de ser la quarta estrofa com la quarta estrofa.
Topant de cap en una i altra soca,
avançant d'esma pel camí de l'aigua,
se'n ve la vaca tota sola. És cega.
D'un cop de roc llançat amb massa traça,
el vailet va buidar-li un ull, i en l'altre
se li ha posat un tel: la vaca és cega.
Ve a abeurar-se a la font com ans solia,
mes no amb el ferm posat d'altres vegades
ni amb ses companyes, no; ve tota sola.
Ses companyes, pels cingles, per les comes,
el silenci dels prats i en la ribera,
fan dringar l'esquellot, mentre pasturen
l'herba fresca a l'atzar... ella cauria.Un cop resolt el conflicte ja pots fer el commit i el push corresponent:
Esborra la branca conflict que ja no et fa falta.
Auto-merging
Projecte
- Renombrar repo
- Canviar url
- Borrar repo
Activitats
Borra la clau ssh:
rm -r -force ~/.sshCrea una nova clau ssh, elimina l’antiga de Gitlab i afegeix la nova.
Verifica que la nova funciona.