fusione tra rami per ottenere un binario master unico

Nell’ era delle aggressioni commmerciali pervasive (o se volete delle dispersioni senza costrutto per chi ancora crede alla vendita telefonica oggi in via di estinzione per la presenza di APP dedicate che risolvono il problema alla radice) potrebbe capitare di accettare un chiamata di ingresso e che qualcuno dall’ altra parte magari da Londra tenti a venderci un rebasing. Ovviamente abbiamo capito male noi perché di fatto il REBASE (che in inglese sta per rimodulare) non è la marca di un nuovo aspirapolvere rivoluzionario che fa anche il caffè ma un comando GIT potentissimo! Nell’ articolo precedente all’ indirizzo https://umbriawaydesign.wordpress.com/2021/01/16/linea-a-e-b-della-metropolitana-romana-trova-le-differenze-con-git-e-il-merge/ abbiamo visto che un merge può avvenire secondo due modalita, il flash forward semplice e il 3way forward. Nel primo caso le fotografie si bloccano sulla linea principale e vanno avanti sulla linea secondaria per cui basterà spostarsi sul ramo principale e fare un merge che in SOURCETREE verrà riconosciuto come semplice. Nel secondo caso abbiamo il binario principale master con la carrozza HEAD che non si arresta mentre qualcuno parallelamente sta lavorando. Allora si ritorna sul branch master e si fondono i commits, i cloni dei file effettuati fino a quel momento con il rischio di sovrapposizioni nel caso in cui l’evento merge si faccia poco di frequente e un nuovo HEAD in cima ai vagoni. Ok adesso valutiamo il REBASING. Se io sto lavorando sulla linea secondaria e sto sviluppando dei commits potrei sentire la necessità di convalidare le mie modifiche sul ramo principale andando a fonderle in un nuovo nodo finale della linea MASTER, in modo da avere una cronologia LINEARE delle modifiche. In sourcetree è tutto intuitivo perché di parte con un normale MERGE, si flegga solo l’opzione rebasing dove il sistema ci avvisa di fare questa delicata operazione solo se non è stato fatto un PUSH, in modo da non alterare o cancellare parte importanti. Infatti il REBASING è uno di quei comandi GIT da usare con molta cautela perchè se qualcun’ altro sta lavorando dall’ altra parte del mondo potrebbe ritrovarsi delle ramificazioni troncate grazie al nostro tempismo da NEWBIE! Quindi come avviene un REBASE sul terminale? Come faccio a unire il mio ramo secondario con la linea principale lasciando tutto inalterato per gli altri sviluppatori? Sto per cambiare la storia di un repository quindi attenzione:

git rebase master

Uff! Era più fumo che arrosto! Questo GIT ha davvero il dono della sintesi.

in questo modo prendo i miei commits e li fondo sulla linea principale secondo una retta uniforme e non con la classica visualizzazione dei merge tradizionali prodotti spostandosi prima sul ramo principale! Solo dopo aver modificato radicalmente questo contenitore con la nuova struttura dei commits potrò fare il mio PUSH!