Exercici: Branques
(Reconeixement - NoComercial - CompartirIgual) 🅭
Objectius
Aquest exercici permet practicar el treball amb branques. En acabar, has de saber:
- Crear i eliminar branques.
- Fer canvis en una branca.
- Canviar de branca.
- Fusionar branques.
- Canviar la base d'una branca.
- Resoldre conflictes en la fusió de branques.
- Resoldre conflictes en el canvi de base d'una branca.
Lliurament
Per a lliurar aquest exercici, tria una de les opcions següents:
En qualsevol cas, lliura també la carpeta amb el repositori de Git que has creat durant l'exercici,
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 vore 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 afig 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 afig 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:
- Afig un llibre a
llibres.txt.
- Fes un commit.
-
Des de la branca mes-musica:
- Afig 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:
- Afig un llibre de ciència-ficció a
llibres.txt.
- Fes un commit.
- Des de la branca
llibres-fantasia:
- Afig 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:
- Afig 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:
- Afig una sèrie a
series.txt.
- Fes un commit.
- Des de la branca
pelicules:
- Afig 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 les branques series-accio i series-drama.
- Des de la branca
series-accio:
- Afig una sèrie d'acció a
series.txt.
- Fes un commit.
- Des de la branca
series-drama:
- Afig 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
En acabar l'exercici, l'històric del repositori ha de tindre una estructura semblant a aquesta:
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
Tria un missatge significatiu i descriptiu per a cada commit.
Errors més comuns
A continuació es recullen els errors que apareixen amb més freqüència en aquest exercici.
Tots dos tenen el mateix origen: confondre quina és la branca actual i quina la branca indicada en l'ordre.
Fer la fusió (merge) en sentit contrari
La fusió sempre incorpora els canvis sobre la branca actual. Per tant, per a incorporar els canvis
de la branca A en la branca main, cal situar-se en la branca main i executar 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 (main) $ 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 (main) $ git lga
* 7d7907b - (9 hours ago) Canvis a la branca A - Joan Puigcerver (HEAD -> main, A)
* 54d8e87 - (9 hours ago) Commit anterior - Joan Puigcerver
Fer el canvi de base (rebase) en sentit contrari
El canvi de base mou la branca actual sobre la branca indicada. Per tant, per a canviar la base
de la branca B a la branca main, cal situar-se en la branca B i executar git rebase 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)
| * 3c5e1d9 - (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 (B) $ 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
Després del canvi de base, la branca B ja es pot fusionar en main amb una fusió directa.
📌 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.