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 ⏎ els cops que faci falta.
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 poesianotepad ara-mateix.txtFes el commit corresponent:
git add .\ara-mateix.txtgit 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 threadsCompressing 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.
ssh-keygenAfegeix la clau pública a Gitlab.
Clone el projecte:
git clone git@gitlab.com:ddemingo/poesia.gitAfegeix una nova estrofa al poema ara-mateix.txt:
nano ara-mateix.txtDe 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-hoi assentar els peus en terra i proclamar-noshereus d'un temps de dubtes i renúnciesen què els sorolls ofeguen les paraulesi amb molts miralls mig estrafem la vida.Fes un commit del canvi i un push al repositori remot:
git commit -a -m "Afegit nova estrofa a 'Ara mateix'"git pushCrea el poema la-vaca-cega.txt amb la primera estrofa:
nano la-vaca-cega-txtTopant 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:
git add la-vaca-cega.txtgit commit -m "Afegit poema 'la vaca cega' amb la primera estrofa"Si fas un git status pots veure que la branca main està un commit per davant de origin/main:
On branch mainYour branch is ahead of 'origin/main' by 1 commit.(use "git push" to publish your local commits)WSL
Gitlab
Fes un push al repositori remot per publicar els canvis:
git pushWSL
Gitlab
Fetch
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 mainYour 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.
WSL
Gitlab
Windows
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 ade00cb5328c1e91fd2d194ff315e7f25653f27cAuthor: 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'Windows
Pots canviar a origin/main amb la comanda git checkout:
git checkout origin/mainlsMode 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:
git checkout mainlsMode 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:
git merge origin/mainDesprés del merge main i origin/main tornen a coincidir:
Windows
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:
D'un cop de roc llançat amb massa traça,el vailet va buidar-li un ull, i en l'altrese li ha posat un tel: la vaca és cega.Fes un commit del canvi i un push al repositori remot:
git commit -a -m "Afegit nova estrofa a 'la vaca cega'"git pushTo gitlab.com:ddemingo/poesia.git3f903a5..701a314 main -> mainAra anirem de pressa sense verificar res amb la comanda git pull:
git pullFrom gitlab.com:ddemingo/poesia3f903a5..701a314 main -> origin/mainUpdating 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 vegadesni 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 vegadesni 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 nothint: have locally. This is usually caused by another repository pushing tohint: the same ref. If you want to integrate the remote changes, usehint: '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.
Gitlab
Windows
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 conflictgit reset --hard origin/maingit pullWindows
Resoldre 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.txtCONFLICT (content): Merge conflict in la-vaca-cega.txtAutomatic 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'altrese li ha posat un tel: la vaca és cega.
<<<<<<< HEADVe a abeurar-se a la font com ans solia,mes no amb el ferm posat d'altres vegadesni 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 pasturenl'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'altrese 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 vegadesni 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 pasturenl'herba fresca a l'atzar... ella cauria.Un cop resolt el conflicte ja pots fer el commit i el push corresponent:
git commit -a -m "Acceptat la tercera estrofa, la nova serà la quarta"git pushWindows
Esborra la branca conflict que ja no et fa falta.
$ git branch -d conflictAuto-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.