MP08 - UF4: Git flow i les seves branques - Activitat 1
Activitat 1
Anem a fer un exercici dirigit per a practicar el treball del git flow.
Es tracta de veure el seu funcionament. Per això crearem un projecte git nou amb l'estructura del git flow. Treballarem amb les branques main, develop i una subbranca de features.
Veurem com, treballant amb la subbranca de features, podem anar fent els canvis pertinents i, quan acabem, fusionarem la nova característica amb la branca develop i finalment fusionarem amb la branca main. També afegirem una etiqueta per tal de posar versió al nostre commit/estat.
Fixa't bé en els passos que fem i assegura't que les comandes que escrius funcionen correctament i no donen error. Una errada en una comanda i el procés no continuarà correctament.
Començarem per modificar el nostre git de manera que generi per defecte la branca main en comptes de master. Per això comprovarem el funcionament de la comanda git config amb les seves diferents opcions. git config --help
-
Crearem un directori inicial on ens dirigirem i comprovarem la configuració:
Solució 1
mkdir \MVD\UF4_A1 cd \MVD\UF4_A1 git config --list
hi ha un paràmetre que ens indica quina és la branca principal:
git config --list | find /I "master" init.defaultbranch=master
-
Aquest és un paràmetre del sistema, però no tindrem permisos per modificar-lo. Afegeix-lo com a paràmetre global per tal que el seu valor sigui main. Cal utilitzar la comanda
git config
Solució 2
git config --global --add init.defaultbranch main
-
Crea un projecte git i comprova que estàs a la branca main
Solució 3
git init git status
hauria de sortir quelcom semblant a
On branch main No commits yet nothing to commit (create/copy files and use "git add" to track)
Per assegurar-te que tens el paràmetre ben configurat executa la comanda
git config --list | find /I "defaultbranch" init.defaultbranch=master init.defaultbranch=main
Apareix dues vegades, ja que el tenim configurat al system i a global.
Crearem un git flow
Però abans, per tal que el gitflow ens agafi com a nom de branca principal la main cal que amb el git fem almenys un commit a la branca main. Per això:
-
Crea un document anomenat README.md amb el contingut
Prova
, afegeix-lo al projecte i fes-ne un commit amb el comentari "Commit Inicial".Solució 4
echo Prova > README.md git add * git commit -m "Commit Inicial"
-
Ara ja podem crear el git flow. Podem fer-ho sense que ens demani res, agafant els valors per defecte, esbrina com i executa la comanda que crea un git flow inicial.
Solució 5
git flow init -d
Treballem amb branques
El més normal és treballar amb subbranques de features, release, hotfix. No solem treballar ni sobre la branca main ni sobre la branca develop. Per tant ...
-
Crea una subbranca nova dins la branca features. L'anomenarem amb el teu nom. Utilitza les comendes de git flow, ja que ho fan tot molt més fàcil. Comprova que estàs a la branca feature/nomAlumne
Solució 6
git flow feature start nomAlumne git status
T'hauria de sortir quelcom semblant a
develop * feature/nomAlumne main
indicant que et trobes a la branca feature/nomAlumne.
Afegirem un fitxer per tal de poder fer quelcom amb aquesta branca i després fusionar-la amb la branca develop.
-
Afegeix un fitxer
inici.php
amb el següent contingut:<?php echo "Fitxer <span style='font-family: courier,monospace'>inici.php</span> per provar la gestió de versions"; ?>
Solució 7
notepad inici.php
Hi copiem el codi font i desem.
-
Comprovem el que hem de fer (status) i:
-
afegim el nou document al repositori
-
fem un commit amb el comentari "Fitxer inici.php".
Solució 8
git status git add * git commit -m "Fitxer inici.php" git status
Ja tenim el primer treball fet, ara el que farem és finalitzar aquesta branca de manera que el git flow ens farà la fusió i ens eliminarà la branca que hem estat desenvolupant. Tot amb una sola comanda que ja t'havia comentat el sistema quan has creat la subbranca a features.
-
-
Finalitza la branca amb la comanda del git flow i comprova que estàs a la branca develop i tens el fitxer
inici.php
. Si vols, abans, pots entrar a la branca develop i comprovar que no tens el fitxer.Comprovem la branca develop
git branch dir *.* git switch develop dir *.* git switch feature/nomAlumne dir *.*
Ara finalitza la branca feature/nomAlumne
Solució 9
git flow feature finish nomAlumne
que deu produir una sortida semblant a
Switched to branch 'develop' Updating 20391f2..3d9fbe3 Fast-forward inici.php | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 inici.php Deleted branch feature/nomAlumne (was 3d9fbe3). Summary of actions: - The feature branch 'feature/nomAlumne' was merged into 'develop' - Feature branch 'feature/nomAlumne' has been locally deleted - You are now on branch 'develop'
Si fas la comprovació de la branca on ets i dels fitxers actuals veuràs com estàs a la branca develop i tens els fitxers
inici.php
iREADME.md
.git status On branch develop nothing to commit, working tree clean dir DD/MM/YYYY HH:mm 128 inici.php DD/MM/YYYY HH:mm 10 README.md
-
Afegirem una etiqueta (tag) a la versió actual de release. En concret la 1.0.0.
Abans de res comprovarem que no tenim cap tag amb la comanda
git tag
Solució 10
i ara amb la comanda
git tag -a v1.0.0 -m "Afegim l'etiqueta: v1.0.0"
afegirem l'etiqueta corresponent. Comprova que s'ha creat amb:
git tag git log --oneline
-
Per acabar fusionarem la branca develop amb la main de manera que aquestes dues seran iguals i ja tindrem la primera versió publicada a la branca main.
Solució 11
git branch main git merge develop git log --oneline
La sortida prevista és
3d9fbe3 (HEAD -> main, tag: v1.0.0, develop) Fitxer inici.php 20391f2 fitxer Inicial
A partir d'aquí et proposo fer la Segona activitat, que no tindrà solucions, i en penges captures a la tasca corresponent del moodle.