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 commit

Un 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

codi font · 4d16c0d