En col·laborar diverses persones, hi ha un parell de formes de compartir els canvis. Una opció és que els altres importen el nostres canvis o que combinen directament des del nostre arbre. No obstant això, el procediment habitual passa per generar un pegat (un fitxer de text que descriu les nostres variacions respecte de l’arbre del projecte) i enviar-ho, per exemple, per email.
Afortunadament, el sistema del Git facilita molt aquesta tasca. Abans de començar a realitzar canvis, convé crear una branca nova que els emmagatzeme. Per exemple, amb:
git checkout -b Solucio
Des d’eixe moment, treballarem en la branca Solucio (consulteu l’ordre git stash en la següent secció si ja s’ha començat a treballar en la branca principal). Una vegada satisfets amb els canvis realitzats i una vegada s’hagen enviat, hem d’assegurar-nos que el nostre repositori local està totalment actualitzat pel que fa a la resta del projecte. Per fer això, tornem a la branca principal mitjançant git checkout master, i usem git pull per a portar els canvis des del repositori des del qual vam obtindre originalment la nostra còpia del codi base.
Llavors tornem a la nostra branca amb git checkout Solucio i executem git rebase master. Amb aquesta darrera ordre s’apliquen a la branca Solucio tots els canvis que hagen tingut lloc a la branca principal des que actualitzàrem la nostra còpia per última vegada. També actualitza l’historial de manera que la nostra branca tinga el seu origen en la versió més recent de la branca principal. Evidentment, hauríem de resoldre els conflictes que s’hagueren generat.
I ja estem preparats per a generar el pegat:
git format-patch master --stdout > solucio-patch.diff
L’ordre compara la branca actual (en aquest cas, Solucio) amb la branca principal, cercant qualsevol commit que no tinga lloc en aquesta última. Produeix un pegat per commit, els envia tots a l’eixida estàndard i els redirigeix al fitxer solucion-patch.diff. També podem usar:
git format-patch master
per a generar al directori actual un fitxer per a cada commit, o:
git format-patch master -o DIRECTORI
per a desar-los al directori que vulguem. Els pegats tindran tots format de correu electrònic. Per a aplicar un pegat aliè es fa servir git am. Novament, crearem una branca nova:
git checkout -b Pegat_Sara
per tal de confondre el pegat amb els nostres propis canvis; les branques es poden crear i combinar molt fàcilment, així que… per què no fer-les servir? Després, apliquem el pegat de Sara amb:
git am pegatdesara.diff
amb la qual cosa s’apliquen els canvis especificats en ell. En projectes gestionats externament, probablement no siga desitjable combinar els canvis amb la branca principal fins que no s’hagen acceptat centralment (moment en el qual actualitzarem en fer git pull). Però en projectes de menor envergadura, si el pegat ens sembla correcte, podem simplement aplicar-ho a la branca principal amb:
git checkout master
git merge Pegat_Sara
Cal destacar que l’ordre git am és capaç de gestionar també els pegats que arriben per email. Només cal desar-los tots en una bústia de correu (en format mailbox estàndard de Linux), i executar:
git am mailbox
per a aplicar a la branca actual tots els pegats continguts en la bústia. L’ordre utilitza el camp From: de cada missatge com a autor del commit; el camp Date: com a data del commit; i el camp Subject: com a títol del commit. El missatge del commit ho formaran el camp Subject: més el cos del correu (fins a l’inici del pegat). Aquest és el format utilitzat per git format-patch.
Article anterior
Article següent





