Quando ci apprestiamo ad unire due rami (branch) di un repository git, potremmo aver bisogno di avere un’anteprima di cosa succederà dalla loro possibile unione (merge). Questo sia per avere uno sguardo d’insieme ai file risultanti dall’unione, ma soprattutto per essere pronti nel caso si presentassero eventuali conflitti. Per eseguire quest’operazione non esiste un comando ufficiale: possiamo soltanto aggirare la cosa e risolverla con l’astuzia, vediamo come.
La soluzione che ha funzionato meglio per me, è quella di non effettuare il merge sul ramo “reale”, bensì su un ramo temporaneo che ne è la copia. Questa tecnica è quindi semplice e soprattutto affidabile, perché nel caso commettessimo qualche casino, lo faremmo su un ramo di prova e quindi “non importante”.
Diciamo di star lavorando al ramo super-feature e di volerlo unire in develop. Vogliamo un’anteprima della loro fusione. Secondo quanto ci siamo appena detti, per prima cosa creiamo una copia temporanea di develop chiamata develop-temp , e successivamente uniamo in quest’ultimo il nostro ramo di lavoro super-feature :
git checkout develop git checkout -b develop-temp git merge super-feature
In questo mondo possiamo semplicemente “gettare via” il ramo temporaneo nel caso volessimo soltanto “guardare” gli eventuali conflitti. Non avremo quindi bisogno di abortire il merge o altro nel caso di errori: potremo semplicemente tornare al nostro lavoro facendo il checkout sul ramo develop :
git checkout develop
Come se niente fosse successo, perché il merge è sul ramo develop-temp , che saremo liberi di cancellare senza influenzare gli altri rami. In sostanza è quello che si chiama in gergo un dry-run.