Salta el contingut
 

Exemple: Estratègia de ramificació en un projecte

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Exemple: Estratègia de ramificació

En aquests apunts veurem com es pot utilitzar una estratègia de ramificació en un projecte de desenvolupament de programari.

En aquest projecte utilitzarem la tècnica d'integració merge --squash --ff-only.

Repositori remot

Anem a simular un projecte de desenvolupament de programari on tres desenvolupadors treballen en diferents funcionalitats de manera independent.

Per evitar haver de crear un repositori a GitHub crearem un repositori remot en la màquina local.

Advertència

Tracteu de seguir la mateixa estructura de directoris per seguir l'exemple correctament.

jpuigcerver@fp:~ $ mkdir -p ~/git_estrategies/remot
jpuigcerver@fp:~ $ cd ~/git_estrategies/remot
jpuigcerver@fp:~/git_estrategies/remot $ git init
Initialized empty Git repository in ~/git_estrategies/remot/.git/
jpuigcerver@fp:~/git_estrategies/remot (main) $ git branch -m main
jpuigcerver@fp:~/git_estrategies/remot (main) $ echo "# Estratègies de ramificació" > README.md
jpuigcerver@fp:~/git_estrategies/remot (main) $ git add README.md
jpuigcerver@fp:~/git_estrategies/remot (main) $ git commit -m "Commit inicial"
[main (root-commit) ec0e2bd] Commit inicial
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
jpuigcerver@fp:~/git_estrategies/remot (main) $ git lga
* ec0e2bd - (0 seconds ago) Commit inicial - Joan Puigcerver (HEAD -> main)
jpuigcerver@fp:~/git_estrategies/remot (main) $ git config --bool core.bare true # (1)!
  1. Aquesta comanda és necessària perquè el repositori siga configurat com a bare i puga ser utilitzat com a repositori remot.

Branca de desenvolupament

El primer pas per establir un flux de treball és crear la branca de desenvolupament develop.

jpuigcerver@fp:~/git_estrategies/remot (main) $ git branch develop
jpuigcerver@fp:~/git_estrategies/remot (main) $ git lga
* ec0e2bd - (0 seconds ago) Commit inicial - Joan Puigcerver (HEAD -> main, develop)

Desenvolupament de funcionalitats

En aquest punt, podem començar a desenvolupar les diferents funcionalitats del projecte en branques independents.

Crearem un repositori local per a cada desenvolupador, simulant que cadascú treballa en el seu dispositiu.

jpuigcerver@fp:~/git_estrategies/remot (main) $ cd ~/git_estrategies
jpuigcerver@fp:~/git_estrategies $ git clone remot anna
Cloning into 'anna'...
done.
jpuigcerver@fp:~/git_estrategies $ git clone remot pau
Cloning into 'pau'...
done.
jpuigcerver@fp:~/git_estrategies $ git clone remot mar
Cloning into 'mar'...
done.
jpuigcerver@fp:~/git_estrategies $ git clone remot carles
Cloning into 'carles'...
done.
jpuigcerver@fp:~/git_estrategies $ tree .
.
├── anna
│   └── README.md
├── carles
│   └── README.md
├── mar
│   └── README.md
├── pau
│   └── README.md
└── remot
    └── README.md

6 directories, 5 files

Cada desenvolupador començarà a treballar en una nova funcionalitat.

  • Anna treballarà en la funcionalitat feature/readme, que consistirà a afegir una descripció del projecte al README.
  • Pau treballarà en la funcionalitat feature/license, que consistirà a afegir una llicència al projecte.
  • Mar treballarà en la funcionalitat feature/author, que consistirà a afegir el nom dels autors del projecte al README.

A partir d'aquest moment, cada desenvolupador treballarà en el seu propi repositori, en la seua pròpia branca de funcionalitat de manera independent i paral·lela.

Important

És important que cada desenvolupador treballe en una única branca per funcionalitat, i que una mateixa branca no es compartisca entre desenvolupadors.

Si existeix la necessitat de compartir una branca, segurament siga perquè la funcionalitat no està ben definida i podrà ser dividida en diverses funcionalitats més xicotetes.

Branca feature/readme

Anna començarà a treballar en la seua funcionalitat feature/readme en el seu repositori local.

Nota

Configurem l'usuari i el correu electrònic per a cada repositori local per simular que cada desenvolupador treballa en el seu propi dispositiu.

També es mostra el nom en el prompt.

anna@fp:~/git_estrategies $ cd ~/git_estrategies/anna
anna@fp:~/git_estrategies/anna (main) $ git config user.name "Anna"
anna@fp:~/git_estrategies/anna (main) $ git config user.email "anna@alu.edu.gva.es"
anna@fp:~/git_estrategies/anna (main) $ git checkout develop
branch 'develop' set up to track 'origin/develop'.
Switched to a new branch 'develop'
anna@fp:~/git_estrategies/anna (develop) $ git checkout -b feature/readme
Switched to a new branch 'feature/readme'
anna@fp:~/git_estrategies/anna (feature/readme) $ echo "Les estratègies de ramificació proporcionen un" >> README.md
anna@fp:~/git_estrategies/anna (feature/readme) $ echo "marc de treball organitzat que facilita la col·laboració" >> README.md
anna@fp:~/git_estrategies/anna (feature/readme) $ echo "entre diferents desenvolupadors en un mateix projecte" >> README.md
anna@fp:~/git_estrategies/anna (feature/readme) $ git commit -a -m "README.md: Descripció"
[feature/readme 502dadb] README.md: Descripció
 1 file changed, 3 insertions(+)
anna@fp:~/git_estrategies/anna (feature/readme) $ echo "" >> README.md
anna@fp:~/git_estrategies/anna (feature/readme) $ echo "La característica principal és la utilització" >> README.md
anna@fp:~/git_estrategies/anna (feature/readme) $ echo "de branques amb un únic propòsit." >> README.md
anna@fp:~/git_estrategies/anna (feature/readme) $ git commit -a -m "README.md: Branques propòsit únic"
[feature/readme ea2559a] README.md: Branques propòsit únic
 1 file changed, 3 insertions(+)
anna@fp:~/git_estrategies/anna (feature/readme) $ git push -u origin feature/readme
branch 'feature/readme' set up to track 'origin/feature/readme'.
To ~/git_estrategies/remot
 * [new branch]      feature/readme -> feature/readme
anna@fp:~/git_estrategies/anna (feature/readme) $ git lga
* ea2559a - (0 seconds ago) README.md: Branques propòsit únic - Anna (HEAD -> feature/readme, origin/feature/readme)
* 502dadb - (0 seconds ago) README.md: Descripció - Anna
* ec0e2bd - (0 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/develop, origin/HEAD, main, develop)

Els passos seguits per Anna són:

  • Crear la branca feature/readme a partir de develop.
  • Realitzar els canvis pertinents.
  • Publicar la branca feature/readme al repositori remot.

Branca feature/license

Pau començarà a treballar en la seua funcionalitat feature/license en el seu repositori local.

pau@fp:~/git_estrategies $ cd ~/git_estrategies/pau
pau@fp:~/git_estrategies/pau (main) $ git config user.name "Pau"
pau@fp:~/git_estrategies/pau (main) $ git config user.email "pau@alu.edu.gva.es"
pau@fp:~/git_estrategies/pau (main) $ git checkout develop
branch 'develop' set up to track 'origin/develop'.
Switched to a new branch 'develop'
pau@fp:~/git_estrategies/pau (develop) $ git checkout -b feature/license
Switched to a new branch 'feature/license'
pau@fp:~/git_estrategies/pau (feature/license) $ echo "" > LICENSE
pau@fp:~/git_estrategies/pau (feature/license) $ echo "## Llicència" >> LICENSE
pau@fp:~/git_estrategies/pau (feature/license) $ echo "CC BY-NC-SA 4.0 DEED - Reconeixement-NoComercial-CompartirIgual 4.0 Internacional" >> LICENSE
pau@fp:~/git_estrategies/pau (feature/license) $ git add LICENSE
pau@fp:~/git_estrategies/pau (feature/license) $ git commit -m "LICENSE: Afegida llicència"
[feature/license b11b498] LICENSE: Afegida llicència
 1 file changed, 3 insertions(+)
 create mode 100644 LICENSE
pau@fp:~/git_estrategies/pau (feature/license) $ echo "" >> LICENSE
pau@fp:~/git_estrategies/pau (feature/license) $ echo "Més informació: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" >> LICENSE
pau@fp:~/git_estrategies/pau (feature/license) $ git commit -a -m "LICENSE: Enllaç a la llicència"
[feature/license c213387] LICENSE: Enllaç a la llicència
 1 file changed, 2 insertions(+)
pau@fp:~/git_estrategies/pau (feature/license) $ git push -u origin feature/license
branch 'feature/license' set up to track 'origin/feature/license'.
To ~/git_estrategies/remot
 * [new branch]      feature/license -> feature/license
pau@fp:~/git_estrategies/pau (feature/license) $ git lga
* c213387 - (0 seconds ago) LICENSE: Enllaç a la llicència - Pau (HEAD -> feature/license, origin/feature/license)
* b11b498 - (0 seconds ago) LICENSE: Afegida llicència - Pau
* ec0e2bd - (1 second ago) Commit inicial - Joan Puigcerver (origin/main, origin/develop, origin/HEAD, main, develop)

Els passos seguits per Pau són:

  • Crear la branca feature/license a partir de develop.
  • Realitzar els canvis pertinents.
  • Publicar la branca feature/license al repositori remot.

Branca feature/author

Mar començarà a treballar en la seua funcionalitat feature/author en el seu repositori local.

mar@fp:~/git_estrategies $ cd ~/git_estrategies/mar
mar@fp:~/git_estrategies/mar (main) $ git config user.name "Mar"
mar@fp:~/git_estrategies/mar (main) $ git config user.email "mar@alu.edu.gva.es"
mar@fp:~/git_estrategies/mar (main) $ git checkout develop
branch 'develop' set up to track 'origin/develop'.
Switched to a new branch 'develop'
mar@fp:~/git_estrategies/mar (develop) $ git checkout -b feature/author
Switched to a new branch 'feature/author'
mar@fp:~/git_estrategies/mar (feature/author) $ echo "" >> README.md
mar@fp:~/git_estrategies/mar (feature/author) $ echo "## Autors" >> README.md
mar@fp:~/git_estrategies/mar (feature/author) $ git commit -a -m "README.md: Secció d'autors"
[feature/author 24be503] README.md: Secció d'autors
 1 file changed, 2 insertions(+)
mar@fp:~/git_estrategies/mar (feature/author) $ echo "- Anna (anna@alu.edu.gva.es)" >> README.md
mar@fp:~/git_estrategies/mar (feature/author) $ git commit -a -m "Autors: Anna"
[feature/author 8683319] Autors: Anna
 1 file changed, 1 insertion(+)
mar@fp:~/git_estrategies/mar (feature/author) $ echo "- Pau (pau@alu.edu.gva.es)" >> README.md
mar@fp:~/git_estrategies/mar (feature/author) $ git commit -a -m "Autors: Pau"
[feature/author 1d5ba44] Autors: Pau
 1 file changed, 1 insertion(+)
mar@fp:~/git_estrategies/mar (feature/author) $ echo "- Mar (mar@alu.edu.gva.es)" >> README.md
mar@fp:~/git_estrategies/mar (feature/author) $ git commit -a -m "Autors: Mar"
[feature/author a216550] Autors: Mar
 1 file changed, 1 insertion(+)
mar@fp:~/git_estrategies/mar (feature/author) $ git push -u origin feature/author
branch 'feature/author' set up to track 'origin/feature/author'.
To ~/git_estrategies/remot
 * [new branch]      feature/author -> feature/author
mar@fp:~/git_estrategies/mar (feature/author) $ git lga
* a216550 - (0 seconds ago) Autors: Mar - Mar (HEAD -> feature/author, origin/feature/author)
* 1d5ba44 - (0 seconds ago) Autors: Pau - Mar
* 8683319 - (0 seconds ago) Autors: Anna - Mar
* 24be503 - (0 seconds ago) README.md: Secció d'autors - Mar
* ec0e2bd - (1 second ago) Commit inicial - Joan Puigcerver (origin/main, origin/develop, origin/HEAD, main, develop)

Els passos seguits per Mar són:

  • Crear la branca feature/author a partir de develop.
  • Realitzar els canvis pertinents.
  • Publicar la branca feature/author al repositori remot.

Integració de les funcionalitats

En aquest punt, les tres funcionalitats han sigut desenvolupades de manera independent, i encara no han segut integrades a la branca de desenvolupament develop.

jpuigcerver@fp:~/git_estrategies $ cd ~/git_estrategies/remot
jpuigcerver@fp:~/git_estrategies/remot (main) $ git lga
* a216550 - (0 seconds ago) Autors: Mar - Mar (feature/author)
* 1d5ba44 - (0 seconds ago) Autors: Pau - Mar
* 8683319 - (0 seconds ago) Autors: Anna - Mar
* 24be503 - (0 seconds ago) README.md: Secció d'autors - Mar
| * c213387 - (0 seconds ago) LICENSE: Enllaç a la llicència - Pau (feature/license)
| * b11b498 - (0 seconds ago) LICENSE: Afegida llicència - Pau
|/  
| * ea2559a - (1 second ago) README.md: Branques propòsit únic - Anna (feature/readme)
| * 502dadb - (1 second ago) README.md: Descripció - Anna
|/  
* ec0e2bd - (1 second ago) Commit inicial - Joan Puigcerver (HEAD -> main, develop)

Preparació del repositori

Pots crear un repositor amb l'estat anterior executant el següent script:

Bash script amb el desenvolupament de les funcionalitats
#!/bin/bash

# Elimina els repositoris si existeixen
if [ -d ~/git_estrategies ]; then
    rm -rf ~/git_estrategies
fi

# Inicialització del repositori remot
mkdir -p ~/git_estrategies/remot
cd ~/git_estrategies/remot
git init
git branch -m main
echo "# Estratègies de ramificació" > README.md
git add README.md
git commit -m "Commit inicial"
git config --bool core.bare true # (1)!

# Inicialització del repositori de desenvolupament
git branch develop

# Clonació del repositori
cd ~/git_estrategies
git clone remot anna
git clone remot pau
git clone remot mar
git clone remot carles

# Desenvolupament de la branca feature/readme
cd ~/git_estrategies/anna
git config user.name "Anna"
git config user.email "anna@alu.edu.gva.es"
git checkout develop
git checkout -b feature/readme
echo "Les estratègies de ramificació proporcionen un" >> README.md
echo "marc de treball organitzat que facilita la col·laboració" >> README.md
echo "entre diferents desenvolupadors en un mateix projecte" >> README.md
git commit -a -m "README.md: Descripció"
echo "" >> README.md
echo "La característica principal és la utilització" >> README.md
echo "de branques amb un únic propòsit." >> README.md
git commit -a -m "README.md: Branques propòsit únic"
git push -u origin feature/readme

# Desenvolupament de la branca feature/license
cd ~/git_estrategies/pau
git config user.name "Pau"
git config user.email "pau@alu.edu.gva.es"
git checkout develop
git checkout -b feature/license
echo "" > LICENSE
echo "## Llicència" >> LICENSE
echo "CC BY-NC-SA 4.0 DEED - Reconeixement-NoComercial-CompartirIgual 4.0 Internacional" >> LICENSE
git add LICENSE
git commit -m "LICENSE: Afegida llicència"
echo "" >> LICENSE
echo "Més informació: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" >> LICENSE
git commit -a -m "LICENSE: Enllaç a la llicència"
git push -u origin feature/license

# Desenvolupament de la branca feature/author
cd ~/git_estrategies/mar
git config user.name "Mar"
git config user.email "mar@alu.edu.gva.es"
git checkout develop
git checkout -b feature/author
echo "" >> README.md
echo "## Autors" >> README.md
git commit -a -m "README.md: Secció d'autors"
echo "- Anna (anna@alu.edu.gva.es)" >> README.md
git commit -a -m "Autors: Anna"
echo "- Pau (pau@alu.edu.gva.es)" >> README.md
git commit -a -m "Autors: Pau"
echo "- Mar (mar@alu.edu.gva.es)" >> README.md
git commit -a -m "Autors: Mar"
git push -u origin feature/author

cd ~/git_estrategies

Anem a veure com integrar les funcionalitats amb la tècnica merge --no-ff + merge --squash --ff-only seguint el procés indicat a Integració.

Integració de feature/readme

Anna ja ha acabat la seua funcionalitat feature/readme i vol integrar-la a la branca develop.

Els passos que ha de seguir són:

  1. Sincronitzar l'estat del repositori local amb el remot amb git fetch.

    anna@fp:~/git_estrategies $ cd ~/git_estrategies/anna
    anna@fp:~/git_estrategies/anna (feature/readme) $ git fetch
    From ~/git_estrategies/remot
     * [new branch]      feature/author  -> origin/feature/author
     * [new branch]      feature/license -> origin/feature/license
    anna@fp:~/git_estrategies/anna (feature/readme) $ git lga
    * a216550 - (1 second ago) Autors: Mar - Mar (origin/feature/author)
    * 1d5ba44 - (1 second ago) Autors: Pau - Mar
    * 8683319 - (1 second ago) Autors: Anna - Mar
    * 24be503 - (1 second ago) README.md: Secció d'autors - Mar
    | * c213387 - (1 second ago) LICENSE: Enllaç a la llicència - Pau (origin/feature/license)
    | * b11b498 - (1 second ago) LICENSE: Afegida llicència - Pau
    |/  
    | * ea2559a - (2 seconds ago) README.md: Branques propòsit únic - Anna (HEAD -> feature/readme, origin/feature/readme)
    | * 502dadb - (2 seconds ago) README.md: Descripció - Anna
    |/  
    * ec0e2bd - (2 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/develop, origin/HEAD, main, develop)
    
  2. Actualitzar la branca develop amb els canvis del remot.

    En aquest cas, ja està actualitzada.

    anna@fp:~/git_estrategies/anna (feature/readme) $ git checkout develop
    Your branch is up to date with 'origin/develop'.
    Switched to branch 'develop'
    anna@fp:~/git_estrategies/anna (develop) $ git pull --ff-only
    Already up to date.
    
  3. Actualitzar la branca feature/readme amb els canvis develop.

    En aquest cas, ja està actualitzada.

    anna@fp:~/git_estrategies/anna (develop) $ git checkout feature/readme
    Your branch is up to date with 'origin/feature/readme'.
    Switched to branch 'feature/readme'
    anna@fp:~/git_estrategies/anna (feature/readme) $ git merge --no-ff --no-edit develop #(1)!
    Already up to date.
    
    1. L'opció --no-edit evita obrir l'editor de text i deixa el missatge de commit per defecte.
  4. Fusionar la branca feature/readme amb develop.

    anna@fp:~/git_estrategies/anna (feature/readme) $ git checkout develop
    Your branch is up to date with 'origin/develop'.
    Switched to branch 'develop'
    anna@fp:~/git_estrategies/anna (develop) $ git merge --squash --ff-only feature/readme
    Updating ec0e2bd..ea2559a
    Fast-forward
    Squash commit -- not updating HEAD
     README.md | 6 ++++++
     1 file changed, 6 insertions(+)
    anna@fp:~/git_estrategies/anna (develop) $ git status
    On branch develop
    Your branch is up to date with 'origin/develop'.
    
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
        modified:   README.md
    
    anna@fp:~/git_estrategies/anna (develop) $ git diff --staged
    diff --git a/README.md b/README.md
    index 05c1f5b..9e7f142 100644
    --- a/README.md
    +++ b/README.md
    @@ -1 +1,7 @@
     # Estratègies de ramificació
    +Les estratègies de ramificació proporcionen un
    +marc de treball organitzat que facilita la col·laboració
    +entre diferents desenvolupadors en un mateix projecte
    +
    +La característica principal és la utilització
    +de branques amb un únic propòsit.
    anna@fp:~/git_estrategies/anna (develop) $ git commit -m "Merge branch 'feature/readme'"
    [develop 2bc4029] Merge branch 'feature/readme'
     1 file changed, 6 insertions(+)
    anna@fp:~/git_estrategies/anna (develop) $ git lga
    * 2bc4029 - (0 seconds ago) Merge branch 'feature/readme' - Anna (HEAD -> develop)
    | * a216550 - (1 second ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (1 second ago) Autors: Pau - Mar
    | * 8683319 - (1 second ago) Autors: Anna - Mar
    | * 24be503 - (1 second ago) README.md: Secció d'autors - Mar
    |/  
    | * c213387 - (1 second ago) LICENSE: Enllaç a la llicència - Pau (origin/feature/license)
    | * b11b498 - (1 second ago) LICENSE: Afegida llicència - Pau
    |/  
    | * ea2559a - (2 seconds ago) README.md: Branques propòsit únic - Anna (origin/feature/readme, feature/readme)
    | * 502dadb - (2 seconds ago) README.md: Descripció - Anna
    |/  
    * ec0e2bd - (2 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/develop, origin/HEAD, main)
    
  5. Publicar els canvis de la branca develop al repositori remot.

    anna@fp:~/git_estrategies/anna (develop) $ git push
    To ~/git_estrategies/remot
       ec0e2bd..2bc4029  develop -> develop
    anna@fp:~/git_estrategies/anna (develop) $ git lga
    * 2bc4029 - (0 seconds ago) Merge branch 'feature/readme' - Anna (HEAD -> develop, origin/develop)
    | * a216550 - (1 second ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (1 second ago) Autors: Pau - Mar
    | * 8683319 - (1 second ago) Autors: Anna - Mar
    | * 24be503 - (1 second ago) README.md: Secció d'autors - Mar
    |/  
    | * c213387 - (1 second ago) LICENSE: Enllaç a la llicència - Pau (origin/feature/license)
    | * b11b498 - (1 second ago) LICENSE: Afegida llicència - Pau
    |/  
    | * ea2559a - (2 seconds ago) README.md: Branques propòsit únic - Anna (origin/feature/readme, feature/readme)
    | * 502dadb - (2 seconds ago) README.md: Descripció - Anna
    |/  
    * ec0e2bd - (2 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  6. Eliminar la branca feature/readme del repositori local i del remot.

    anna@fp:~/git_estrategies/anna (develop) $ git branch -D feature/readme
    Deleted branch feature/readme (was ea2559a).
    anna@fp:~/git_estrategies/anna (develop) $ git push origin --delete feature/readme
    To ~/git_estrategies/remot
     - [deleted]         feature/readme
    anna@fp:~/git_estrategies/anna (develop) $ git lga
    * 2bc4029 - (0 seconds ago) Merge branch 'feature/readme' - Anna (HEAD -> develop, origin/develop)
    | * a216550 - (1 second ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (1 second ago) Autors: Pau - Mar
    | * 8683319 - (1 second ago) Autors: Anna - Mar
    | * 24be503 - (1 second ago) README.md: Secció d'autors - Mar
    |/  
    | * c213387 - (1 second ago) LICENSE: Enllaç a la llicència - Pau (origin/feature/license)
    | * b11b498 - (1 second ago) LICENSE: Afegida llicència - Pau
    |/  
    * ec0e2bd - (2 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    

En aquest punt, la funcionalitat desenvolupada per Anna ha sigut integrada a la branca de desenvolupament develop i pot continuar treballant en altres funcionalitats.

Integració de feature/license

Pau ja ha acabat la seua funcionalitat feature/license i vol integrar-la a la branca develop.

Els passos que ha de seguir són:

  1. Sincronitzar l'estat del repositori local amb el remot amb git fetch.

    pau@fp:~/git_estrategies $ cd ~/git_estrategies/pau
    pau@fp:~/git_estrategies/pau (feature/license) $ git fetch
    From ~/git_estrategies/remot
       ec0e2bd..2bc4029  develop        -> origin/develop
     * [new branch]      feature/author -> origin/feature/author
    pau@fp:~/git_estrategies/pau (feature/license) $ git lga
    * 2bc4029 - (0 seconds ago) Merge branch 'feature/readme' - Anna (origin/develop)
    | * c213387 - (1 second ago) LICENSE: Enllaç a la llicència - Pau (HEAD -> feature/license, origin/feature/license)
    | * b11b498 - (1 second ago) LICENSE: Afegida llicència - Pau
    |/  
    | * a216550 - (1 second ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (1 second ago) Autors: Pau - Mar
    | * 8683319 - (1 second ago) Autors: Anna - Mar
    | * 24be503 - (1 second ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (2 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main, develop)
    
  2. Actualitzar la branca develop amb els canvis del remot.

    pau@fp:~/git_estrategies/pau (feature/license) $ git checkout develop
    Your branch is behind 'origin/develop' by 1 commit, and can be fast-forwarded.
      (use "git pull" to update your local branch)
    Switched to branch 'develop'
    pau@fp:~/git_estrategies/pau (develop) $ git pull --ff-only
    Updating ec0e2bd..2bc4029
    Fast-forward
     README.md | 6 ++++++
     1 file changed, 6 insertions(+)
    pau@fp:~/git_estrategies/pau (develop) $ git lga
    * 2bc4029 - (1 second ago) Merge branch 'feature/readme' - Anna (HEAD -> develop, origin/develop)
    | * c213387 - (2 seconds ago) LICENSE: Enllaç a la llicència - Pau (origin/feature/license, feature/license)
    | * b11b498 - (2 seconds ago) LICENSE: Afegida llicència - Pau
    |/  
    | * a216550 - (2 seconds ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (2 seconds ago) Autors: Pau - Mar
    | * 8683319 - (2 seconds ago) Autors: Anna - Mar
    | * 24be503 - (2 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (3 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  3. Actualitzar la branca feature/license amb els canvis develop.

    pau@fp:~/git_estrategies/pau (develop) $ git checkout feature/license
    Your branch is up to date with 'origin/feature/license'.
    Switched to branch 'feature/license'
    pau@fp:~/git_estrategies/pau (feature/license) $ git merge --no-ff --no-edit develop # (1)!
    Merge made by the 'ort' strategy.
     README.md | 6 ++++++
     1 file changed, 6 insertions(+)
    pau@fp:~/git_estrategies/pau (feature/license) $ git lga
    *   5b6d510 - (0 seconds ago) Merge branch 'develop' into feature/license - Pau (HEAD -> feature/license)
    |\  
    | * 2bc4029 - (1 second ago) Merge branch 'feature/readme' - Anna (origin/develop, develop)
    * | c213387 - (2 seconds ago) LICENSE: Enllaç a la llicència - Pau (origin/feature/license)
    * | b11b498 - (2 seconds ago) LICENSE: Afegida llicència - Pau
    |/  
    | * a216550 - (2 seconds ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (2 seconds ago) Autors: Pau - Mar
    | * 8683319 - (2 seconds ago) Autors: Anna - Mar
    | * 24be503 - (2 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (3 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
    1. L'opció --no-edit evita obrir l'editor de text i deixa el missatge de commit per defecte.
  4. Fusionar la branca feature/license amb develop.

    pau@fp:~/git_estrategies/pau (feature/license) $ git checkout develop
    Your branch is up to date with 'origin/develop'.
    Switched to branch 'develop'
    pau@fp:~/git_estrategies/pau (develop) $ git merge --squash --ff-only feature/license
    Updating 2bc4029..5b6d510
    Fast-forward
    Squash commit -- not updating HEAD
     LICENSE | 5 +++++
     1 file changed, 5 insertions(+)
     create mode 100644 LICENSE
    pau@fp:~/git_estrategies/pau (develop) $ git status
    On branch develop
    Your branch is up to date with 'origin/develop'.
    
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
        new file:   LICENSE
    
    pau@fp:~/git_estrategies/pau (develop) $ git diff --staged
    diff --git a/LICENSE b/LICENSE
    new file mode 100644
    index 0000000..809d714
    --- /dev/null
    +++ b/LICENSE
    @@ -0,0 +1,5 @@
    +
    +## Llicència
    +CC BY-NC-SA 4.0 DEED - Reconeixement-NoComercial-CompartirIgual 4.0 Internacional
    +
    +Més informació: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca
    pau@fp:~/git_estrategies/pau (develop) $ git commit -m "Merge branch 'feature/license'"
    [develop b7bf0a5] Merge branch 'feature/license'
     1 file changed, 5 insertions(+)
     create mode 100644 LICENSE
    pau@fp:~/git_estrategies/pau (develop) $ git lga
    * b7bf0a5 - (0 seconds ago) Merge branch 'feature/license' - Pau (HEAD -> develop)
    | *   5b6d510 - (0 seconds ago) Merge branch 'develop' into feature/license - Pau (feature/license)
    | |\  
    | |/  
    |/|   
    * | 2bc4029 - (1 second ago) Merge branch 'feature/readme' - Anna (origin/develop)
    | * c213387 - (2 seconds ago) LICENSE: Enllaç a la llicència - Pau (origin/feature/license)
    | * b11b498 - (2 seconds ago) LICENSE: Afegida llicència - Pau
    |/  
    | * a216550 - (2 seconds ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (2 seconds ago) Autors: Pau - Mar
    | * 8683319 - (2 seconds ago) Autors: Anna - Mar
    | * 24be503 - (2 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (3 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  5. Publicar els canvis de la branca develop al repositori remot.

    pau@fp:~/git_estrategies/pau (develop) $ git push
    To ~/git_estrategies/remot
       2bc4029..b7bf0a5  develop -> develop
    pau@fp:~/git_estrategies/pau (develop) $ git lga
    * b7bf0a5 - (0 seconds ago) Merge branch 'feature/license' - Pau (HEAD -> develop, origin/develop)
    | *   5b6d510 - (0 seconds ago) Merge branch 'develop' into feature/license - Pau (feature/license)
    | |\  
    | |/  
    |/|   
    * | 2bc4029 - (1 second ago) Merge branch 'feature/readme' - Anna
    | * c213387 - (2 seconds ago) LICENSE: Enllaç a la llicència - Pau (origin/feature/license)
    | * b11b498 - (2 seconds ago) LICENSE: Afegida llicència - Pau
    |/  
    | * a216550 - (2 seconds ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (2 seconds ago) Autors: Pau - Mar
    | * 8683319 - (2 seconds ago) Autors: Anna - Mar
    | * 24be503 - (2 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (3 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  6. Eliminar la branca feature/license del repositori local i del remot.

    pau@fp:~/git_estrategies/pau (develop) $ git branch -D feature/license
    Deleted branch feature/license (was 5b6d510).
    pau@fp:~/git_estrategies/pau (develop) $ git push origin --delete feature/license
    To ~/git_estrategies/remot
     - [deleted]         feature/license
    pau@fp:~/git_estrategies/pau (develop) $ git lga
    * b7bf0a5 - (0 seconds ago) Merge branch 'feature/license' - Pau (HEAD -> develop, origin/develop)
    * 2bc4029 - (1 second ago) Merge branch 'feature/readme' - Anna
    | * a216550 - (2 seconds ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (2 seconds ago) Autors: Pau - Mar
    | * 8683319 - (2 seconds ago) Autors: Anna - Mar
    | * 24be503 - (2 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (3 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    

Integració de feature/author

Mar ja ha acabat la seua funcionalitat feature/author i vol integrar-la a la branca develop.

Els passos que ha de seguir són:

  1. Sincronitzar l'estat del repositori local amb el remot amb git fetch.

    mar@fp:~/git_estrategies $ cd ~/git_estrategies/mar
    mar@fp:~/git_estrategies/mar (feature/author) $ git fetch
    From ~/git_estrategies/remot
       ec0e2bd..b7bf0a5  develop    -> origin/develop
    mar@fp:~/git_estrategies/mar (feature/author) $ git lga
    * b7bf0a5 - (0 seconds ago) Merge branch 'feature/license' - Pau (origin/develop)
    * 2bc4029 - (1 second ago) Merge branch 'feature/readme' - Anna
    | * a216550 - (2 seconds ago) Autors: Mar - Mar (HEAD -> feature/author, origin/feature/author)
    | * 1d5ba44 - (2 seconds ago) Autors: Pau - Mar
    | * 8683319 - (2 seconds ago) Autors: Anna - Mar
    | * 24be503 - (2 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (3 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main, develop)
    
  2. Actualitzar la branca develop amb els canvis del remot.

    mar@fp:~/git_estrategies/mar (feature/author) $ git checkout develop
    Your branch is behind 'origin/develop' by 2 commits, and can be fast-forwarded.
      (use "git pull" to update your local branch)
    Switched to branch 'develop'
    mar@fp:~/git_estrategies/mar (develop) $ git pull --ff-only
    Updating ec0e2bd..b7bf0a5
    Fast-forward
     LICENSE   | 5 +++++
     README.md | 6 ++++++
     2 files changed, 11 insertions(+)
     create mode 100644 LICENSE
    mar@fp:~/git_estrategies/mar (develop) $ git lga
    * b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau (HEAD -> develop, origin/develop)
    * 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    | * a216550 - (3 seconds ago) Autors: Mar - Mar (origin/feature/author, feature/author)
    | * 1d5ba44 - (3 seconds ago) Autors: Pau - Mar
    | * 8683319 - (3 seconds ago) Autors: Anna - Mar
    | * 24be503 - (3 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  3. Actualitzar la branca feature/author amb els canvis develop.

    Info

    En aquest cas, han sorgit conflictes que hem hagut de solucionar manualment.

    mar@fp:~/git_estrategies/mar (develop) $ git checkout feature/author
    Your branch is up to date with 'origin/feature/author'.
    Switched to branch 'feature/author'
    mar@fp:~/git_estrategies/mar (feature/author) $ git merge --no-ff --no-edit develop # (1)!
    Auto-merging README.md
    CONFLICT (content): Merge conflict in README.md
    Automatic merge failed; fix conflicts and then commit the result.
    mar@fp:~/git_estrategies/mar (feature/author|MERGING) $ code README.md # (2)!
    mar@fp:~/git_estrategies/mar (feature/author|MERGING) $ git add README.md
    mar@fp:~/git_estrategies/mar (feature/author|MERGING) $ git commit --no-edit # (1)!
    [feature/author 72afb5a] Merge branch 'develop' into feature/author
    mar@fp:~/git_estrategies/mar (feature/author) $ git lga
    *   72afb5a - (0 seconds ago) Merge branch 'develop' into feature/author - Mar (HEAD -> feature/author)
    |\  
    | * b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau (origin/develop, develop)
    | * 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    * | a216550 - (3 seconds ago) Autors: Mar - Mar (origin/feature/author)
    * | 1d5ba44 - (3 seconds ago) Autors: Pau - Mar
    * | 8683319 - (3 seconds ago) Autors: Anna - Mar
    * | 24be503 - (3 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
    1. L'opció --no-edit evita obrir l'editor de text i deixa el missatge de commit per defecte.
    2. S'han esborrat les marques de conflicte manualment.
  4. Fusionar la branca feature/author amb develop.

    mar@fp:~/git_estrategies/mar (feature/author) $ git checkout develop
    Your branch is up to date with 'origin/develop'.
    Switched to branch 'develop'
    mar@fp:~/git_estrategies/mar (develop) $ git merge --squash --ff-only feature/author
    Updating b7bf0a5..72afb5a
    Fast-forward
    Squash commit -- not updating HEAD
     README.md | 5 +++++
     1 file changed, 5 insertions(+)
    mar@fp:~/git_estrategies/mar (develop) $ git status
    On branch develop
    Your branch is up to date with 'origin/develop'.
    
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
        modified:   README.md
    
    mar@fp:~/git_estrategies/mar (develop) $ git diff --staged
    diff --git a/README.md b/README.md
    index 9e7f142..416ca41 100644
    --- a/README.md
    +++ b/README.md
    @@ -1,4 +1,9 @@
     # Estratègies de ramificació
    +
    +## Autors
    +- Anna (anna@alu.edu.gva.es)
    +- Pau (pau@alu.edu.gva.es)
    +- Mar (mar@alu.edu.gva.es)
     Les estratègies de ramificació proporcionen un
     marc de treball organitzat que facilita la col·laboració
     entre diferents desenvolupadors en un mateix projecte
    mar@fp:~/git_estrategies/mar (develop) $ git commit -m "Merge branch 'feature/author'"
    [develop f9152dc] Merge branch 'feature/author'
     1 file changed, 5 insertions(+)
    mar@fp:~/git_estrategies/mar (develop) $ git lga
    * f9152dc - (0 seconds ago) Merge branch 'feature/author' - Mar (HEAD -> develop)
    | *   72afb5a - (0 seconds ago) Merge branch 'develop' into feature/author - Mar (feature/author)
    | |\  
    | |/  
    |/|   
    * | b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau (origin/develop)
    * | 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    | * a216550 - (3 seconds ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (3 seconds ago) Autors: Pau - Mar
    | * 8683319 - (3 seconds ago) Autors: Anna - Mar
    | * 24be503 - (3 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  5. Publicar els canvis de la branca develop al repositori remot.

    mar@fp:~/git_estrategies/mar (develop) $ git push
    To ~/git_estrategies/remot
       b7bf0a5..f9152dc  develop -> develop
    mar@fp:~/git_estrategies/mar (develop) $ git lga
    * f9152dc - (0 seconds ago) Merge branch 'feature/author' - Mar (HEAD -> develop, origin/develop)
    | *   72afb5a - (0 seconds ago) Merge branch 'develop' into feature/author - Mar (feature/author)
    | |\  
    | |/  
    |/|   
    * | b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau
    * | 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    | * a216550 - (3 seconds ago) Autors: Mar - Mar (origin/feature/author)
    | * 1d5ba44 - (3 seconds ago) Autors: Pau - Mar
    | * 8683319 - (3 seconds ago) Autors: Anna - Mar
    | * 24be503 - (3 seconds ago) README.md: Secció d'autors - Mar
    |/  
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  6. Eliminar la branca feature/author del repositori local i del remot.

    mar@fp:~/git_estrategies/mar (develop) $ git branch -D feature/author
    Deleted branch feature/author (was 72afb5a).
    mar@fp:~/git_estrategies/mar (develop) $ git push origin --delete feature/author
    To ~/git_estrategies/remot
     - [deleted]         feature/author
    mar@fp:~/git_estrategies/mar (develop) $ git lga
    * f9152dc - (0 seconds ago) Merge branch 'feature/author' - Mar (HEAD -> develop, origin/develop)
    * b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau
    * 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    

Llançament de la versió 1.0.0

Anna és l'encarregada de preparar el llançament de la versió 1.0.0.

Els passos que ha de seguir són:

  1. Actualitzar la branca develop amb els canvis del remot.

    anna@fp:~/git_estrategies $ cd ~/git_estrategies/anna
    anna@fp:~/git_estrategies/anna (develop) $ git checkout develop
    Your branch is up to date with 'origin/develop'.
    Already on 'develop'
    anna@fp:~/git_estrategies/anna (develop) $ git fetch --prune
    From ~/git_estrategies/remot
     - [deleted]         (none)     -> origin/feature/author
     - [deleted]         (none)     -> origin/feature/license
       2bc4029..f9152dc  develop    -> origin/develop
    anna@fp:~/git_estrategies/anna (develop) $ git pull --ff-only
    Updating 2bc4029..f9152dc
    Fast-forward
     LICENSE   | 5 +++++
     README.md | 5 +++++
     2 files changed, 10 insertions(+)
     create mode 100644 LICENSE
    anna@fp:~/git_estrategies/anna (develop) $ git lga
    * f9152dc - (0 seconds ago) Merge branch 'feature/author' - Mar (HEAD -> develop, origin/develop)
    * b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau
    * 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  2. Crear la branca de llançament release/v1.0.0 a partir de la branca develop.

    anna@fp:~/git_estrategies/anna (develop) $ git checkout -b release/v1.0.0
    Switched to a new branch 'release/v1.0.0'
    anna@fp:~/git_estrategies/anna (release/v1.0.0) $ git lga
    * f9152dc - (0 seconds ago) Merge branch 'feature/author' - Mar (HEAD -> release/v1.0.0, origin/develop, develop)
    * b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau
    * 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  3. Realitzar les tasques necessàries per a preparar el llançament de la versió 1.0.0.

    anna@fp:~/git_estrategies/anna (release/v1.0.0) $ echo "v1.0.0" > VERSION
    anna@fp:~/git_estrategies/anna (release/v1.0.0) $ git add VERSION
    anna@fp:~/git_estrategies/anna (release/v1.0.0) $ git commit -m "Publicada versió: v1.0.0"
    [release/v1.0.0 2c075dd] Publicada versió: v1.0.0
     1 file changed, 1 insertion(+)
     create mode 100644 VERSION
    anna@fp:~/git_estrategies/anna (release/v1.0.0) $ git lga
    * 2c075dd - (0 seconds ago) Publicada versió: v1.0.0 - Anna (HEAD -> release/v1.0.0)
    * f9152dc - (0 seconds ago) Merge branch 'feature/author' - Mar (origin/develop, develop)
    * b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau
    * 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  4. Integrar aquesta branca a la branca de desenvolupament develop i publicar-la.

    anna@fp:~/git_estrategies/anna (release/v1.0.0) $ git checkout develop
    Your branch is up to date with 'origin/develop'.
    Switched to branch 'develop'
    anna@fp:~/git_estrategies/anna (develop) $ git merge --ff-only release/v1.0.0
    Updating f9152dc..2c075dd
    Fast-forward
     VERSION | 1 +
     1 file changed, 1 insertion(+)
     create mode 100644 VERSION
    anna@fp:~/git_estrategies/anna (develop) $ git push
    To ~/git_estrategies/remot
       f9152dc..2c075dd  develop -> develop
    anna@fp:~/git_estrategies/anna (develop) $ git lga
    * 2c075dd - (0 seconds ago) Publicada versió: v1.0.0 - Anna (HEAD -> develop, origin/develop, release/v1.0.0)
    * f9152dc - (0 seconds ago) Merge branch 'feature/author' - Mar
    * b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau
    * 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver (origin/main, origin/HEAD, main)
    
  5. Integrar aquesta branca a la branca principal main i publicar els canvis.

    anna@fp:~/git_estrategies/anna (develop) $ git checkout main
    Your branch is up to date with 'origin/main'.
    Switched to branch 'main'
    anna@fp:~/git_estrategies/anna (main) $ git merge --ff-only release/v1.0.0
    Updating ec0e2bd..2c075dd
    Fast-forward
     LICENSE   |  5 +++++
     README.md | 11 +++++++++++
     VERSION   |  1 +
     3 files changed, 17 insertions(+)
     create mode 100644 LICENSE
     create mode 100644 VERSION
    anna@fp:~/git_estrategies/anna (main) $ git push
    To ~/git_estrategies/remot
       ec0e2bd..2c075dd  main -> main
    anna@fp:~/git_estrategies/anna (main) $ git lga
    * 2c075dd - (0 seconds ago) Publicada versió: v1.0.0 - Anna (HEAD -> main, origin/main, origin/develop, origin/HEAD, release/v1.0.0, develop)
    * f9152dc - (0 seconds ago) Merge branch 'feature/author' - Mar
    * b7bf0a5 - (1 second ago) Merge branch 'feature/license' - Pau
    * 2bc4029 - (2 seconds ago) Merge branch 'feature/readme' - Anna
    * ec0e2bd - (4 seconds ago) Commit inicial - Joan Puigcerver
    
  6. Crear i publicar una etiqueta amb la versió 1.0.0.

    anna@fp:~/git_estrategies/anna (main) $ git tag v1.0.0
    anna@fp:~/git_estrategies/anna (main) $ git push --tags
    To ~/git_estrategies/remot
     * [new tag]         v1.0.0 -> v1.0.0
    anna@fp:~/git_estrategies/anna (main) $ git lga
    * 2c075dd - (1 second ago) Publicada versió: v1.0.0 - Anna (HEAD -> main, tag: v1.0.0, origin/main, origin/develop, origin/HEAD, release/v1.0.0, develop)
    * f9152dc - (1 second ago) Merge branch 'feature/author' - Mar
    * b7bf0a5 - (2 seconds ago) Merge branch 'feature/license' - Pau
    * 2bc4029 - (3 seconds ago) Merge branch 'feature/readme' - Anna
    * ec0e2bd - (5 seconds ago) Commit inicial - Joan Puigcerver
    
  7. Eliminar la branca de llançament.

    anna@fp:~/git_estrategies/anna (main) $ git branch -D release/v1.0.0
    Deleted branch release/v1.0.0 (was 2c075dd).
    anna@fp:~/git_estrategies/anna (main) $ git push origin --delete release/v1.0.0
    error: unable to delete 'release/v1.0.0': remote ref does not exist
    error: failed to push some refs to '~/git_estrategies/remot'
    anna@fp:~/git_estrategies/anna (main) $ git lga
    * 2c075dd - (1 second ago) Publicada versió: v1.0.0 - Anna (HEAD -> main, tag: v1.0.0, origin/main, origin/develop, origin/HEAD, develop)
    * f9152dc - (1 second ago) Merge branch 'feature/author' - Mar
    * b7bf0a5 - (2 seconds ago) Merge branch 'feature/license' - Pau
    * 2bc4029 - (3 seconds ago) Merge branch 'feature/readme' - Anna
    * ec0e2bd - (5 seconds ago) Commit inicial - Joan Puigcerver
    

Estat final

L'estat final del repositori segons l'estratègia d'integració utilitzada és el següent.

merge --no-ff + merge --squash --ff-only

jpuigcerver@fp:~/git_estrategies $ cd ~/git_estrategies/remot
jpuigcerver@fp:~/git_estrategies/remot (main) $ git lga
* 2c075dd - (1 second ago) Publicada versió: v1.0.0 - Anna (HEAD -> main, tag: v1.0.0, develop)
* f9152dc - (1 second ago) Merge branch 'feature/author' - Mar
* b7bf0a5 - (2 seconds ago) Merge branch 'feature/license' - Pau
* 2bc4029 - (3 seconds ago) Merge branch 'feature/readme' - Anna
* ec0e2bd - (5 seconds ago) Commit inicial - Joan Puigcerver

merge --no-ff (Gitflow)

jpuigcerver@fp:~/git_estrategies $ cd ~/git_estrategies/remot
jpuigcerver@fp:~/git_estrategies/remot (main) $ git lga
*   bc63807 - (0 seconds ago) Merge branch 'release/v1.0.0' into develop - Anna (develop)
|\  
| | *   4dbab8e - (0 seconds ago) Merge branch 'release/v1.0.0' - Anna (HEAD -> main, tag: v1.0.0)
| | |\  
| | |/  
| |/|   
| * | 23832cd - (0 seconds ago) Publicada versió: v1.0.0 - Anna
|/ /  
* |   cef4c2b - (1 second ago) Merge branch 'feature/author' into develop - Mar
|\ \  
| * | 393e204 - (4 seconds ago) Autors: Mar - Mar
| * | 5feff69 - (5 seconds ago) Autors: Pau - Mar
| * | 67cf1ea - (5 seconds ago) Autors: Anna - Mar
| * | 811d4d7 - (5 seconds ago) README.md: Secció d'autors - Mar
| |/  
* |   f57aa81 - (3 seconds ago) Merge branch 'feature/license' into develop - Pau
|\ \  
| * | 96a9b49 - (5 seconds ago) LICENSE: Enllaç a la llicència - Pau
| * | 9c9d3ba - (5 seconds ago) LICENSE: Afegida llicència - Pau
| |/  
* |   ab5db56 - (4 seconds ago) Merge branch 'feature/readme' into develop - Anna
|\ \  
| |/  
|/|   
| * 4d09428 - (6 seconds ago) README.md: Branques propòsit únic - Anna
| * bbae0af - (6 seconds ago) README.md: Descripció - Anna
|/  
* 1b27d4c - (7 seconds ago) Commit inicial - Joan Puigcerver
%%{init: { 'theme': 'forest' } }%%
gitGraph
   commit id:"Commit inicial"
   branch develop order: 2
   branch feature/readme order: 2
   branch feature/license order: 2
   branch feature/author order: 2
   checkout feature/readme
   commit id:"README.md: Descripció"
   commit id:"README.md: Branques propòsit únic"
   checkout feature/license
   commit id:"LICENSE: Afegida llicència"
   commit id:"LICENSE: Enllaç a la llicència"
   checkout feature/author
   commit id:"README.md: Secció d'autors"
   commit id:"Autors: Anna"
   commit id:"Autors: Pau"
   commit id:"Autors: Mar"
   checkout develop
   merge feature/readme
   merge feature/license
   merge feature/author
   branch "release/v1.0.0" order: 1
   commit id:"Publicada versió: v1.0.0"
   checkout develop
   merge release/v1.0.0
   checkout main
   merge release/v1.0.0 tag: "v1.0.0"

rebase + merge --ff-only

jpuigcerver@fp:~/git_estrategies $ cd ~/git_estrategies/remot
jpuigcerver@fp:~/git_estrategies/remot (main) $ git lga
* b65dd58 - (0 seconds ago) Publicada versió: v1.0.0 - Anna (HEAD -> main, tag: v1.0.0, develop)
* 52b7a9f - (1 second ago) Autors: Mar - Mar
* 08b5ed9 - (1 second ago) Autors: Pau - Mar
* 9dd2d3f - (1 second ago) Autors: Anna - Mar
* 68ec029 - (1 second ago) README.md: Secció d'autors - Mar
* 3437876 - (1 second ago) LICENSE: Enllaç a la llicència - Pau
* 3b78f7c - (1 second ago) LICENSE: Afegida llicència - Pau
* ef69234 - (1 second ago) README.md: Branques propòsit únic - Anna
* 08d5044 - (2 seconds ago) README.md: Descripció - Anna
* 76e3984 - (2 seconds ago) Commit inicial - Joan Puigcerver

rebase + merge --no-ff

jpuigcerver@fp:~/git_estrategies $ cd ~/git_estrategies/remot
jpuigcerver@fp:~/git_estrategies/remot (main) $ git lga
* 2e5055d - (1 second ago) Publicada versió: v1.0.0 - Anna (HEAD -> main, tag: v1.0.0, develop)
*   819768e - (1 second ago) Merge branch 'feature/author' into develop - Mar
|\  
| * 6a55891 - (2 seconds ago) Autors: Mar - Mar
| * 6378ec5 - (2 seconds ago) Autors: Pau - Mar
| * d3ba434 - (2 seconds ago) Autors: Anna - Mar
| * bc83183 - (2 seconds ago) README.md: Secció d'autors - Mar
|/  
*   cd61062 - (2 seconds ago) Merge branch 'feature/license' into develop - Pau
|\  
| * 1deca93 - (2 seconds ago) LICENSE: Enllaç a la llicència - Pau
| * 8e49ffe - (2 seconds ago) LICENSE: Afegida llicència - Pau
|/  
*   b88863d - (2 seconds ago) Merge branch 'feature/readme' into develop - Anna
|\  
| * 89cd46e - (2 seconds ago) README.md: Branques propòsit únic - Anna
| * c449135 - (2 seconds ago) README.md: Descripció - Anna
|/  
* ae3c31e - (3 seconds ago) Commit inicial - 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.