Commit cd1c3845 authored by jg5dev's avatar jg5dev 💬
Browse files

better

parent 0dff4c6c
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -863,6 +863,16 @@ Hauràs notat que el merge de l'escenari base era un _fast-forward_ ("Fast-forwa

La intuïció: el fast-forward és "no t'has mogut, només m'actualitzo"; el commit de merge és "tots dos hem fet feina, ho ajunto i ho deixo registrat". Per això un historial amb merges sovint té forma de diamant, i un de només fast-forwards és lineal.

#### Preferir el fast-forward

De vegades el fast-forward no és només el que passa, sinó el que **vols** que passi: que una branca no divergeixi mai i es limiti a seguir l'altra. El cas més clar és el teu `main` local respecte d'`origin/main`. Quan baixes la feina dels companys, gairebé mai no vols un commit de merge entre tots dos: vols que el teu local simplement es posi al dia. Si un dia no es pot fer fast-forward, vol dir que tots dos heu avançat pel vostre compte (heu divergit), i és el senyal per aturar-se a mirar què ha passat abans d'ajuntar res.

Aquesta preferència es pot fer explícita amb `--ff-only`: git integra només si és un fast-forward i, si no, s'atura en comptes de crear un commit de merge tot sol. Fixa't que reacciona a la **divergència**, no al conflicte: que les branques hagin divergit no vol dir que el merge tingui conflictes (pot ser net o no), però `--ff-only` s'atura igualment, perquè el que vols garantir és que la branca només avanci en línia recta.

Si vols garantir aquest comportament, val més deixar-lo configurat per defecte que no pas recordar el flag cada vegada: amb `git config --global pull.ff only` (per als `pull`) i `git config --global merge.ff only` (per als `merge`), veure la [FAQ](#git-pull-merge-o-rebase), la comprovació és automàtica i git et frena sol quan apareix una divergència. Hi guanyes una història **lineal**, més fàcil de llegir i de desfer, i un punt de control que t'obliga a integrar de manera conscient (amb merge o rebase) en lloc de generar bombolles de merge sense voler.

Tot i així, és una configuració per defecte, no una imposició: quan puntualment vulguis un commit de merge, el pots forçar amb `git pull --no-ff` (o `git merge --no-ff <branca>`), que té prioritat sobre la configuració. Així el commit de merge passa a ser un acte deliberat en lloc d'una cosa que passa sola.

## Operacions habituals

Més enllà del cicle bàsic de sincronitzar i pujar canvis, hi ha un conjunt d'operacions que faràs sovint: etiquetar versions, recuperar estats anteriors, comparar canvis i esborrar arxius del control de versions.