L'ordre git revert permet desfer els canvis d'un commit concret sense alterar la història del repositori.
Per fer-ho, crea un commit nou que inverteix els canvis del commit que es vol desfer.
A diferència de git reset, no elimina cap commit, de manera que es pot utilitzar
sense problemes en branques que ja s'han publicat en un repositori remot.
L'acció revert només permet desfer un commit cada vegada. Per a desfer-ne diversos, es pot aplicar
l'ordre revert successivament a cada commit amb l'opció --no-commit:
gitrevert--no-commit<ref>
Aquest procés posa el repositori en l'estat REVERTING i afig els canvis a l'Àrea de preparació
(Staging Area). En aquest punt, es poden revertir més commits o finalitzar el procés
amb git revert --continue.
Aquesta acció pot generar conflictes si els canvis que es volen desfer s'han modificat posteriorment.
En aquest cas, el repositori passa a l'estat REVERTING i cal resoldre els conflictes manualment,
de la mateixa manera que en una fusió de branques (merge).
Exemple: Resolució de conflictes en git revert
Es vol desfer el commitCanvi A, però els canvis de Canvi B depenen del primer commit.
Per tant, git revert genera un conflicte i cal indicar manualment quin serà l'estat final del fitxer.
jpuigcerver@fp:~/git_revert(main)$catREADME.md
# Git revert- Canvi A- Canvi Bjpuigcerver@fp:~/git_revert(main)$gitlga
*5ab52e3-(1 second ago)Revert "Canvi C i D"-Joan Puigcerver(HEAD -> main)*54e6def-(1 second ago)Revert "Canvi E"-Joan Puigcerver*1e5c1df-(1 second ago)Canvi E-Joan Puigcerver*9f735e9-(1 second ago)Canvi D-Joan Puigcerver*3102fd3-(1 second ago)Canvi C-Joan Puigcerver*e4b3412-(1 second ago)Canvi B-Joan Puigcerver*aef9ebe-(1 second ago)Canvi A-Joan Puigcerver*2c18085-(1 second ago)Commit inicial-Joan Puigcerverjpuigcerver@fp:~/git_revert(main)$gitrevertaef9ebe
Auto-merging README.mdCONFLICT (content): Merge conflict in README.mderror: could not revert aef9ebe... Canvi Ahint: After resolving the conflicts, mark them withhint: "git add/rm <pathspec>", then runhint: "git revert --continue".hint: You can instead skip this commit with "git revert --skip".hint: To abort and get back to the state before "git revert",hint: run "git revert --abort".hint: Disable this message with "git config advice.mergeConflict false"jpuigcerver@fp:~/git_revert(main|REVERTING)$gitstatus
On branch mainYou are currently reverting commit aef9ebe. (fix conflicts and run "git revert --continue") (use "git revert --skip" to skip this patch) (use "git revert --abort" to cancel the revert operation)Unmerged paths: (use "git restore --staged <file>..." to unstage) (use "git add <file>..." to mark resolution)both modified: README.mdno changes added to commit (use "git add" and/or "git commit -a")jpuigcerver@fp:~/git_revert(main|REVERTING)$codeREADME.md# (1)!jpuigcerver@fp:~/git_revert(main|REVERTING)$catREADME.md
# Git revert- Canvi Bjpuigcerver@fp:~/git_revert(main|REVERTING)$gitdiff
diff --cc README.mdindex 395c8c6,9f757b1..0000000--- a/README.md+++ b/README.md@@@ -1,3 -1,1 +1,2 @@@ # Git revert
- - Canvi A+- Canvi B
jpuigcerver@fp:~/git_revert(main|REVERTING)$gitaddREADME.md
jpuigcerver@fp:~/git_revert(main|REVERTING)$gitrevert--continue--no-edit
[main 41d66b0] Revert "Canvi A" 1 file changed, 1 deletion(-)jpuigcerver@fp:~/git_revert(main)$gitlga
*41d66b0-(0 seconds ago)Revert "Canvi A"-Joan Puigcerver(HEAD -> main)*5ab52e3-(1 second ago)Revert "Canvi C i D"-Joan Puigcerver*54e6def-(1 second ago)Revert "Canvi E"-Joan Puigcerver*1e5c1df-(1 second ago)Canvi E-Joan Puigcerver*9f735e9-(1 second ago)Canvi D-Joan Puigcerver*3102fd3-(1 second ago)Canvi C-Joan Puigcerver*e4b3412-(1 second ago)Canvi B-Joan Puigcerver*aef9ebe-(1 second ago)Canvi A-Joan Puigcerver*2c18085-(1 second ago)Commit inicial-Joan Puigcerver
S'edita manualment el fitxer per a eliminar els marcadors de conflicte i la línia - Canvi A.
📌 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.