Salta el contingut
 

Commit amend

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Amend

L'opció git commit --amend permet corregir canvis a l'últim commit realitzat.

Permet modificar el missatge de l'últim commit, afegir nous fitxers o afegir nous canvis els fitxers del repositori, inclòs els que han segut modificats en aquest últim commit.

El funcionament d'aquesta ordre consisteix en crear un nou commit amb els canvis de l'Àrea de Preparació i els canvis del commit anterior. A més, el nou commit substitueix l'anterior.

Advertència

Cal tindre en compte que el commit original serà substituït pel nou commit, però si aquest ja ha estat publicat al repositori remot o té altres referències, aquestes referències no seran modificades i es podrien produir problemes en el repositori.

Funcionament de git commit --amend

Figura 1. Funcionament de git commit --amend.

La sintaxi és:

git commit --amend [-m <missatge>]

  • -m <missatge>: Permet especificar un nou missatge per al commit.
Preparació del repositori

Inicialitzem un repositori amb un fitxer README.md i realitzem el primer commit.

Danger

Crea el nou repositori en una carpeta independent per evitar problemes amb els exemples i exercicis anteriors.

setup_amend.sh
#!/bin/bash

# Elimina els repositori si existeix
if [ -d ~/git_amend ]; then
    rm -rf ~/git_amend
fi

mkdir -p ~/git_amend
cd ~/git_amend
git init
git branch -m main
echo "# Git amend" > README.md
git add README.md
git commit -m "Commit inicial"
echo "- Canvi A" >> README.md
git commit -a -m "Canvi A"
echo "- canvi B" >> README.md
git commit -a -m "Canvi C"
git lga
jpuigcerver@fp:~ $ mkdir -p ~/git_amend
jpuigcerver@fp:~ $ cd ~/git_amend
jpuigcerver@fp:~/git_amend $ git init
Initialized empty Git repository in ~/git_amend/.git/
jpuigcerver@fp:~/git_amend (main) $ git branch -m main
jpuigcerver@fp:~/git_amend (main) $ echo "# Git amend" > README.md
jpuigcerver@fp:~/git_amend (main) $ git add README.md
jpuigcerver@fp:~/git_amend (main) $ git commit -m "Commit inicial"
[main (root-commit) c73703f] Commit inicial
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
jpuigcerver@fp:~/git_amend (main) $ echo "- Canvi A" >> README.md
jpuigcerver@fp:~/git_amend (main) $ git commit -a -m "Canvi A"
[main 4f61eca] Canvi A
 1 file changed, 1 insertion(+)
jpuigcerver@fp:~/git_amend (main) $ echo "- canvi B" >> README.md
jpuigcerver@fp:~/git_amend (main) $ git commit -a -m "Canvi C"
[main 348d5ee] Canvi C
 1 file changed, 1 insertion(+)
jpuigcerver@fp:~/git_amend (main) $ git lga
* 348d5ee - (0 seconds ago) Canvi C - Joan Puigcerver (HEAD -> main)
* 4f61eca - (0 seconds ago) Canvi A - Joan Puigcerver
* c73703f - (0 seconds ago) Commit inicial - Joan Puigcerver
Exemple: Canviar el missatge de l'últim commit

Vegem que el missatge de l'últim commit Canvi C no és correcte i volem canviar-lo a Canvi B.

jpuigcerver@fp:~/git_amend (main) $ git lga
* 348d5ee - (0 seconds ago) Canvi C - Joan Puigcerver (HEAD -> main)
* 4f61eca - (0 seconds ago) Canvi A - Joan Puigcerver
* c73703f - (0 seconds ago) Commit inicial - Joan Puigcerver
jpuigcerver@fp:~/git_amend (main) $ git commit --amend -m "Canvi B"
[main b1a44c4] Canvi B
 Date: Tue Jan 21 12:38:11 2025 +0100
 1 file changed, 1 insertion(+)
jpuigcerver@fp:~/git_amend (main) $ git lga
* b1a44c4 - (0 seconds ago) Canvi B - Joan Puigcerver (HEAD -> main)
* 4f61eca - (0 seconds ago) Canvi A - Joan Puigcerver
* c73703f - (0 seconds ago) Commit inicial - Joan Puigcerver
jpuigcerver@fp:~/git_amend (main) $ git show
commit b1a44c479806f8b538ebc0a86950e7533d9fe471
Author: Joan Puigcerver <j.puigcerveribanez@edu.gva.es>
Date:   Tue Jan 21 12:38:11 2025 +0100

    Canvi B

diff --git a/README.md b/README.md
index 927b2f6..99116bf 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # Git amend
 - Canvi A
+- canvi B
Exemple: Modificar els canvis de l'últim commit

A més, vegem que el text del fitxer README.md no és correcte i volem canviar el text "canvi" a majúscules.

jpuigcerver@fp:~/git_amend (main) $ cat README.md
# Git amend
- Canvi A
- canvi B
jpuigcerver@fp:~/git_amend (main) $ code README.md # (1)!
jpuigcerver@fp:~/git_amend (main) $ git diff
diff --git a/README.md b/README.md
index 99116bf..47cf8c5 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
 # Git amend
 - Canvi A
-- canvi B
+- Canvi B
jpuigcerver@fp:~/git_amend (main) $ git add README.md
jpuigcerver@fp:~/git_amend (main) $ git commit --amend --no-edit # (2)!
[main 290f771] Canvi B
 Date: Tue Jan 21 12:38:11 2025 +0100
 1 file changed, 1 insertion(+)
jpuigcerver@fp:~/git_amend (main) $ git lga
* 290f771 - (0 seconds ago) Canvi B - Joan Puigcerver (HEAD -> main)
* 4f61eca - (0 seconds ago) Canvi A - Joan Puigcerver
* c73703f - (0 seconds ago) Commit inicial - Joan Puigcerver
jpuigcerver@fp:~/git_amend (main) $ git show
commit 290f771141eff61f5363beb24589da58550b466a
Author: Joan Puigcerver <j.puigcerveribanez@edu.gva.es>
Date:   Tue Jan 21 12:38:11 2025 +0100

    Canvi B

diff --git a/README.md b/README.md
index 927b2f6..47cf8c5 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # Git amend
 - Canvi A
+- Canvi B
  1. Editem el fitxer README.md manualment a través de l'editor de text.
  2. L'opció --no-edit permet deixar el missatge del commit original.

Bibliografia

📌 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.