Xuleta de Git
Les comandes del dia a dia, en una pàgina
El cicle mínim
git status |
On estic i què tinc sense consolidar |
git diff |
Què he tocat i encara no he consolidat |
git add fitxer.sql |
Preparar eixe fitxer per al commit |
git commit -m "Motiu (INC-1234)" |
Consolidar-ho, amb el seu motiu |
git push |
Pujar-ho al repositori compartit |
git status abans i després de cada passa. Al principi és el que orienta.
Veure què ha canviat
git diff |
El que he tocat jo i encara no he consolidat |
git diff main...la-meua-branca |
Tot el que aporta una branca respecte de main |
git log --oneline -- fitxer.sql |
Totes les versions d’un fitxer: data, autor i motiu |
git log --oneline --all -- fitxer.sql |
Igual, però sense amagar cap branca |
git show a183fe2 |
Un canvi concret, amb el seu motiu i el seu autor |
git blame fitxer.sql |
Quin commit va deixar cada línia com està |
blame no és per a buscar culpables: és per a arribar al commit i llegir el motiu.
Branques
git switch -c nom-de-la-branca |
Crear-la i passar-hi |
git switch main |
Tornar a la principal |
git branch --show-current |
En quina estic |
git push -u origin nom-de-la-branca |
Publicar-la la primera vegada |
Recuperar
git show a183fe2:fitxer.sql |
Mirar com estava, sense tocar res |
git restore --source=a183fe2 fitxer.sql |
Tornar-lo enrere en el meu directori |
git restore fitxer.sql |
Descartar el que he tocat i no he consolidat |
git revert a183fe2 |
Desfer un canvi ja integrat, amb un commit nou |
Copieu el hash de git log; no compteu posicions amb HEAD~2, que depén de quants commits hàgeu fet pel camí.
En una branca compartida, sempre git revert.
Un conflicte
Git s’atura quan els dos heu tocat la mateixa línia i deixa els dos candidats dins del fitxer:
<<<<<<< HEAD
la vostra versió
=======
la versió de l'altre
>>>>>>> main
Obriu-lo, deixeu el que ha de quedar, lleveu les tres línies de marcadors, i:
git add fitxer.sql
git commitUn conflicte no és una avaria: és Git negant-se a triar per vosaltres en l’únic cas en què no pot fer-ho sense inventar.
El que no s’ha de fer
| Per què | |
|---|---|
git push --force en una branca compartida |
Descarta el que hi ha al servidor i trenca el clon de tothom |
Reescriure l’historial de main |
Per a desfar-hi coses, git revert |
| Posar una contrasenya en un commit | L’historial la guarda per sempre: cal rotar la credencial |
| Un commit que ho barreja tot | Impossible de revisar i de revertir per separat |
En la vostra branca, encara sense fusionar, sí que podeu reescriure: git rebase -i ajunta els commits de prova en un que explique el canvi de veres. I si heu de forçar, git push --force-with-lease, que falla si algú havia pujat res.
Quan el commit no diu per què
Canvia timeout a 60 ← el diff ja ho diu
Evita timeout durant la càrrega de matrícula (INC-1234) ← això no està enlloc més