Commit amend
(Reconeixement - NoComercial - CompartirIgual) 🅭
Modificar l'últim commit (git commit --amend)
L'opció git commit --amend permet corregir l'últim commit realitzat. En concret, permet modificar-ne
el missatge, afegir-hi fitxers nous o afegir-hi nous canvis, inclosos els fitxers modificats en aquest commit .
Internament, aquesta ordre crea un commit nou amb els canvis de l'Àrea de preparació
i els del commit anterior, i el commit nou substitueix l'anterior.
El commit original se substitueix pel commit nou.
Si el commit original ja s'ha publicat en el repositori remot o té altres referències,
aquestes referències no es modifiquen, i això pot provocar problemes en el repositori.
Figura 1. Funcionament de git commit --amend.
La sintaxi és:
git commit --amend [ -m <missatge>] [ --no-edit]
[-m <missatge>]: (opcional) missatge nou per al commit .
[--no-edit]: (opcional) manté el missatge del commit original.
Preparació del repositori
El repositori dels exemples es prepara amb les ordres següents:
setup_amend.sh #!/bin/bash
# Elimina el 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
Crea el nou repositori en una carpeta independent per evitar problemes amb els exemples i exercicis anteriors.
Exemple: Canviar el missatge de l'últim commit
El missatge de l'últim commit , Canvi C , no és correcte i es vol canviar 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
S'observa que l'últim commit té ara el missatge Canvi B i un identificador diferent.
Exemple: Modificar els canvis de l'últim commit
A més, el text del fitxer README.md no és correcte: es vol escriure la paraula canvi en 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
S'edita el fitxer README.md manualment amb l'editor de text.
L'opció --no-edit manté 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.