<div class="page"> <div class="cover text-center"> <img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo"> # Cherry Pick i Squash <div class="text-end fit-content ms-auto my-3 mt-auto pt-3"> <p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p> <p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p> <p><strong>Curs:</strong> 2024/2025</p> </div> <div> <p class="fw-bold mb-0">Llicència: BY-NC-SA</p> <p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank"> <img class="mx-auto" src="/itb/images/license.png" alt="Licence"/> </a> </div><!--license--> </div><!--cover--> </div><!--page--> {:toc} ## Objectius L'objectiu d'aquest exercici és entendre el funcionament de l'eina `git cherry-pick` i `git merge --squash` i posar-la en pràctica. ## Estat inicial Realitza el exercici a partir del següent repositori: ::: tip Podeu copiar i pegar les ordres següents a __Git Bash__. ::: ```bash mkdir ~/git_cherry_exercise cd ~/git_cherry_exercise git init echo "# Exercici Git Cherry Pick i Squash" >> README.md git add README.md git commit -m "Initial commit" git branch -m main git branch canvis git branch squash git checkout canvis echo "1. Primer canvi" >> README.md git commit -a -m "1. Primer canvi" git branch other echo "2. Segon canvi" >> README.md git commit -a -m "2. Segon canvi" echo "3. Tercer canvi" >> README.md git commit -a -m "3. Tercer canvi" echo "diff --git a/README.md b/README.md index 3e04fa9..ad11b6f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Exercici Git Cherry Pick i Squash +## Cherry Pick 1. Primer canvi 2. Segon canvi 3. Tercer canvi " | patch README.md git commit -a -m "Subtitol cherry-pick" git checkout other echo "4. Quart canvi" >> README.md git commit -a -m "4. Quart canvi" git checkout squash echo "## Squash" >> README.md echo "1. Primer canvi" >> README.md git commit -a -m "1. Primer canvi squash" echo "2. Segon canvi" >> README.md git commit -a -m "2. Segon canvi squash" echo "3. Tercer canvi" >> README.md git commit -a -m "3. Tercer canvi squash" git checkout main ``` L'estat inicial del repositori és: ```shell jpuigcerver@fp:~/git_reset_exercise (main) $ git lga * 2c5e16c - (2 seconds ago) 4. Quart canvi - Joan Puigcerver (other) | * 1f9887f - (2 seconds ago) 3. Tercer canvi squash - Joan Puigcerver (HEAD -> squash) | * ef0be04 - (2 seconds ago) 2. Segon canvi squash - Joan Puigcerver | * 313a8bc - (2 seconds ago) 1. Primer canvi squash - Joan Puigcerver | | * 1b5162f - (3 seconds ago) Subtitol cherry-pick - Joan Puigcerver (canvis) | | * 6c7e760 - (3 seconds ago) 3. Tercer canvi - Joan Puigcerver | | * 02131e0 - (3 seconds ago) 2. Segon canvi - Joan Puigcerver | |/ |/| * | 07a997c - (3 seconds ago) 1. Primer canvi - Joan Puigcerver |/ * fc165e2 - (3 seconds ago) Initial commit - Joan Puigcerver (main) ``` ## Exercici ### Cherry pick - Des de la branca `other`, obté els canvis realitzats en el commit __Subtitol cherry-pick__. - Des de la branca `other`, obté els canvis realitzats en el commit __2. Segon canvi__. - Fusiona els canvis de la branca `other` a `main` ##### Estat final ```shell jpuigcerver@fp:~/git_reset_exercise (main) $ git lga * 3021a4c - (5 minutes ago) 2. Segon canvi - Joan Puigcerver (HEAD -> main, other) * 0eeefb1 - (5 minutes ago) Subtitol cherry-pick - Joan Puigcerver * 2c5e16c - (5 minutes ago) 4. Quart canvi - Joan Puigcerver | * 1f9887f - (5 minutes ago) 3. Tercer canvi squash - Joan Puigcerver (squash) | * ef0be04 - (5 minutes ago) 2. Segon canvi squash - Joan Puigcerver | * 313a8bc - (5 minutes ago) 1. Primer canvi squash - Joan Puigcerver | | * 1b5162f - (5 minutes ago) Subtitol cherry-pick - Joan Puigcerver (canvis) | | * 6c7e760 - (5 minutes ago) 3. Tercer canvi - Joan Puigcerver | | * 02131e0 - (5 minutes ago) 2. Segon canvi - Joan Puigcerver | |/ |/| * | 07a997c - (5 minutes ago) 1. Primer canvi - Joan Puigcerver |/ * fc165e2 - (5 minutes ago) Initial commit - Joan Puigcerver jpuigcerver@fp:~/git_reset_exercise (main) $ cat README.md # Exercici Git Cherry Pick i Squash ## Cherry Pick 1. Primer canvi 2. Segon canvi 4. Quart canvi ``` ### Squash - Des de la branca `main`, fusiona els canvis de la branca `squash` en un únic commit. ##### Estat final ```shell jpuigcerver@fp:~/git_reset_exercise (main) $ git lga * 8b046ac - (2 seconds ago) Canvis de la branca 'squash' - Joan Puigcerver (HEAD -> main) * 3021a4c - (7 minutes ago) 2. Segon canvi - Joan Puigcerver (other) * 0eeefb1 - (7 minutes ago) Subtitol cherry-pick - Joan Puigcerver * 2c5e16c - (7 minutes ago) 4. Quart canvi - Joan Puigcerver | * 1f9887f - (7 minutes ago) 3. Tercer canvi squash - Joan Puigcerver (squash) | * ef0be04 - (7 minutes ago) 2. Segon canvi squash - Joan Puigcerver | * 313a8bc - (7 minutes ago) 1. Primer canvi squash - Joan Puigcerver | | * 1b5162f - (7 minutes ago) Subtitol cherry-pick - Joan Puigcerver (canvis) | | * 6c7e760 - (7 minutes ago) 3. Tercer canvi - Joan Puigcerver | | * 02131e0 - (7 minutes ago) 2. Segon canvi - Joan Puigcerver | |/ |/| * | 07a997c - (7 minutes ago) 1. Primer canvi - Joan Puigcerver |/ * fc165e2 - (7 minutes ago) Initial commit - Joan Puigcerver jpuigcerver@fp:~/git_reset_exercise (main) $ git show HEAD commit 8b046acd1ce9af1e053329267ce2e4c680a2bcea (HEAD -> main) Author: Joan Puigcerver <joapuiib@gmail.com> Date: Mon Dec 18 17:52:44 2023 +0100 Canvis de la branca 'squash' diff --git a/README.md b/README.md index 917b500..962a892 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,8 @@ 1. Primer canvi 2. Segon canvi 4. Quart canvi + +## Squash +1. Primer canvi +2. Segon canvi +3. Tercer canvi jpuigcerver@fp:~/git_reset_exercise (main) $ cat README.md # Exercici Git Cherry Pick i Squash ## Cherry Pick 1. Primer canvi 2. Segon canvi 4. Quart canvi ## Squash 1. Primer canvi 2. Segon canvi 3. Tercer canvi ```