Exercici: Branques
Llicència: CC BY-NC-SA 4.0
(Reconeixement - NoComercial - CompartirIgual) 🅭
Objectius
Els objectius d'aquest exercici són:
- Conéixer com crear i eliminar branques.
- Conéixer com realitzar canvis en una branca.
- Conéixer com canviar de branca.
- Conéixer com fusionar branques.
- Conéixer com canviar la base d'una branca.
- Conéixer com resoldre conflictes en la fusió de branques.
- Conéixer com resoldre conflictes en el canvi de base d'una branca.
Lliurament
Per a lliurar aquest exercici podeu triar entre una de les següents opcions:
En qualsevol cas, també cal lliurar la carpeta amb el repositori de Git
que has creat durant l'exercici de forma comprimida en format .zip o .tgz.
Exercici
Inicialització
Comprova l'estat del repositori amb git status i git lga (1) després de cada ordre per entendre els diferents estats dels fitxers.
- Revisa Històric de canvis (git log) per veure la configuració de l'àlies
git lga.
Crea el nou repositori en una carpeta independent per evitar problemes amb els exemples i exercicis anteriors.
- Crea un directori anomenat
bloc2_exercici en la teua carpeta de treball.
- Inicialitza un repositori de Git en aquest directori.
- Crea un fitxer anomenat
llibres.txt i afegeix tres llibres que t'agraden.
- Fes un primer commit. Tria un missatge significatiu.
- Reanomena la branca principal a
main.
Fusió directa
- Crea una branca anomenada
musica i situa't en aquesta branca.
- Crea un fitxer anomenat
musica.txt i afegeix tres cançons que t'agraden.
- Fes un commit en aquesta branca.
- Incorpora els canvis de
musica a la branca main mitjançant una fusió.
Documenta l'estat del repositori amb git lga al final d'aquest apartat.
Fusió de branques divergents
- Des de la branca
main, crea les branques mes-llibres i mes-musica.
- Des de la branca
mes-llibres:
- Afegeix un llibre a
llibres.txt.
- Fes un commit.
-
Des de la branca mes-musica:
- Afegeix una cançó a
musica.txt.
- Fes un commit.
-
Incorpora els canvis de mes-llibres a la branca main mitjançant una fusió.
- Incorpora els canvis de
mes-musica a la branca main mitjançant una fusió.
Documenta l'estat del repositori amb git lga al final d'aquest apartat.
Resolució de conflictes en la fusió
- Des de la branca
main, crea les branques llibres-ciencia-ficcio i llibres-fantasia.
- Des de la branca
llibres-ciencia-ficcio:
- Afegeix un llibre de ciència-ficció a
llibres.txt.
- Fes un commit.
- Des de la branca
llibres-fantasia:
- Afegeix un llibre de fantasia a
llibres.txt.
- Fes un commit.
- Incorpora els canvis de
llibres-ciencia-ficcio a la branca main mitjançant una fusió.
- Incorpora els canvis de
llibres-fantasia a la branca main mitjançant una fusió.
Documenta els conflictes que s'han generat i com els has resolt.
Documenta l'estat del repositori amb git lga al final d'aquest apartat.
Eliminació d'una branca
- Des de la branca
main, crea una branca anomenada series.
- Des de la branca
main, crea una branca anomenada pelicules.
- Des de la branca
series:
- Afegeix una sèrie a
series.txt.
- Fes un commit.
- Elimina la branca
pelicules.
- Elimina la branca
series.
Què ha passat amb el commit de la branca series?
Documenta l'estat del repositori amb git lga abans i després de l'eliminació de les branques.
Canvi de base d'una branca
- Des de la branca
main, crea una branca anomenada series.
- Des de la branca
main, crea una branca anomenada pelicules.
- Des de la branca
series:
- Afegeix una sèrie a
series.txt.
- Fes un commit.
- Des de la branca
pelicules:
- Afegeix una pel·lícula a
pelicules.txt.
- Fes un commit.
- Incorpora els canvis de la branca
pelicules a la branca main mitjançant una fusió.
- Canvia la base de la branca
series a la branca main.
- Incorpora els canvis de la branca
series a la branca main mitjançant una fusió.
Aquest procés és el que cal seguir per fusionar branques divergents d'una manera que la història siga lineal.
Documenta l'estat del repositori amb git lga al final d'aquest apartat.
Resolució de conflictes en el canvi de base
- Des de la branca
main, crea una branca anomenada series-accio i series-drama.
- Des de la branca
series-accio:
- Afegeix una sèrie d'acció a
series.txt.
- Fes un commit.
- Des de la branca
series-drama:
- Afegeix una sèrie de drama a
series.txt.
- Fes un commit.
- Incorpora els canvis de la branca
series-accio a la branca main mitjançant una fusió.
-
Canvia la base de la branca series-drama a la branca main.
Documenta els conflictes que s'han generat i com els has resolt.
-
Incorpora els canvis de la branca series-drama a la branca main mitjançant una fusió.
Documenta l'estat del repositori amb git lga al final d'aquest apartat.
Estat final
Trieu un missatge significatiu i descriptiu per a cada commit.
jpuigcerver@FP:~/bloc2_exercici (main) $ git lga
* bdbd567 - (7 hours ago) Sèries drama - Joan Puigcerver (HEAD -> main, series-drama) # Canvi de base amb conflictes
* f8eda6f - (7 hours ago) Sèries acció - Joan Puigcerver (series-accio)
* 1f3b706 - (7 hours ago) Sèries - Joan Puigcerver (series) # Canvi de base
* 560f17e - (7 hours ago) Pel·lícules - Joan Puigcerver (pelicules)
* 64746f4 - (8 hours ago) Fusió de branques divergents amb conflictes - Joan Puigcerver # Resolució de conflictes
|\
| * 94da3f8 - (8 hours ago) Llibres fantasia - Joan Puigcerver (llibres-fantasia)
* | 766f3af - (8 hours ago) Llibres ciència ficció - Joan Puigcerver (llibres-ciencia-ficcio)
|/
* c9ffd43 - (9 hours ago) Fusió de branques divergents - Joan Puigcerver # Fusió de branques divergents
|\
| * 7193d82 - (9 hours ago) Més música - Joan Puigcerver (mes-musica)
* | 01e1b0b - (9 hours ago) Més llibres - Joan Puigcerver (mes-llibres)
|/
* 7d7907b - (9 hours ago) Música - Joan Puigcerver (musica) # Fusió directa
* 54d8e87 - (9 hours ago) Llibres - Joan Puigcerver
Errors més comuns
-
Realitzar la fusió (merge) en sentit contrari.
Si volem incorporar els canvis de la branca A a la branca main,
hem de situar-nos en la branca main i fer la fusió amb git merge A.
jpuigcerver@FP:~/bloc2_exercici (A) $ git commit -m "Canvis a la branca A"
jpuigcerver@FP:~/bloc2_exercici (A) $ git checkout main
jpuigcerver@FP:~/bloc2_exercici (A) $ git lga
* 7d7907b - (9 hours ago) Canvis a la branca A - Joan Puigcerver (A)
* 54d8e87 - (9 hours ago) Commit anterior - Joan Puigcerver (HEAD -> main)
jpuigcerver@FP:~/bloc2_exercici (main) $ git merge A
jpuigcerver@FP:~/bloc2_exercici (A) $ git lga
* 7d7907b - (9 hours ago) Canvis a la branca A - Joan Puigcerver (HEAD -> main, A)
* 54d8e87 - (9 hours ago) Commit anterior - Joan Puigcerver
-
Realitzar el canvi de base (rebase) en sentit contrari.
Si volem canviar la base de la branca B a la branca main i
incorporar els seus canvis, hem de situar-nos en la branca B i fer el canvi de base
sobre la branca main.
jpuigcerver@FP:~/bloc2_exercici (B) $ git commit -m "Canvis a la branca B"
jpuigcerver@FP:~/bloc2_exercici (B) $ git lga
* 7d7907b - (9 hours ago) Canvis a la branca A - Joan Puigcerver (main, A)
| * 54d8e87 - (9 hours ago) Canvis a la branca B - Joan Puigcerver (HEAD -> B)
|/
* 54d8e87 - (9 hours ago) Commit anterior - Joan Puigcerver
jpuigcerver@FP:~/bloc2_exercici (B) $ git rebase main
Successfully rebased and updated refs/heads/B.
jpuigcerver@FP:~/bloc2_exercici (main) $ git lga
* 734fc2a - (9 hours ago) Canvis a la branca B - Joan Puigcerver (HEAD -> B)
* 7d7907b - (9 hours ago) Canvis a la branca A - Joan Puigcerver (main, A)
* 54d8e87 - (9 hours ago) Commit anterior - Joan Puigcerver
📌 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.