Nella nuova versione di Git, la 2.6.32 uscita il 6 di giugno, sono diverse le novità introdotte, ma una in particolare ha lo scopo di agevolare la vita dei programmatori nel momento in cui commettono dei semplici typo, ossia errori di battitura, all’interno del testo dei propri commit.
La variazione riguarda l’opzione fixup di git commit, già presente da tempo in git, che ha lo scopo di agevolare operazioni su modifiche che andrebbero incluse in un commit precedente.
Utilizzando la procedura standard i passaggi sono questi:
- Modifica al codice
- Commit della modifica
- Avvio del rebase interattivo
- Identificazione del commit che necessita il fix
- Spostamento del nuovo commit sotto a quello originale
- Applicazione dello “squash”
Mediante l’opzione –fixup di commit e l’utilizzo della funzione –autosquash di rebase tutta questa procedura viene automatizzata, poiché al comando viene passato già lo SHA del commit di riferimento, quindi in fase di rebase tutto viene raggruppato, favorendo ordine e leggibilità.
Nella nuova versione di git è stata aggiunta all’opzione –fixup la possibilità di indicare se questa si riferisce a un amend oppure a un reword. Nel primo caso ci si riferisce a una modifica che comprende sia il contenuto del commit che il messaggio, mentre nel secondo caso solo quest’ultimo.
La spiegazione del suo utilizzo è offerta nella pagina man associata a git-commit. In particolare, per amend abbiamo:
The commit created by
Il commit creato da –fixup=amend:<commit> è simile [a –fixup=<commit>], ma al subject viene aggiunto il prefisso “amend!”. Il suo messaggio di log viene copiato nel messaggio di log del commit “amend!” ed aperto nell’editor così che possa essere rifinito. Quando git rebase –autosquash effettua lo squash del commit “amend!” all’interno di <commit> il messaggio di log di <commit> viene rimpiazzato da quello del commit “amend!”--fixup=amend:<commit>
is similar but its subject is instead prefixed with “amend!”. The log message of is copied into the log message of the “amend!” commit and opened in an editor so it can be refined. Whengit rebase --autosquash
squashes the “amend!” commit into<commit>
, the log message of<commit>
is replaced by the refined log message from the “amend!” commit.
In maniera simile funziona reword:
--fixup=reword:<commit>
is shorthand for--fixup=amend:<commit> --only
. It creates an “amend!” commit with only a log message (ignoring any changes staged in the index). When squashed bygit rebase --autosquash
, it replaces the log message of<commit>
without making any other changes.--fixup=reword:<commit>
è l’abbreviazione di--fixup=amend:<commit> --only
. Crea un commit “amend!” con solo un messaggio di log (ignorando qualsiasi change presente nell’indice). Quando git rebase –autosquash effettua lo squash rimpiazza il messaggio di log di <commit> senza effettuare alcuna altra modifica.
Certamente un’agevolazione non da poco che consentirà di evitare i numerosi commenti che siamo sicuri tutti hanno visto almeno una volta con subject “Fix typo” 🙂
Ultima raccomandazione: non c’è bisogno di dire che queste operazioni vanno svolte solo sui branch personali vero? Nessuno tocchi master!
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.
Lascia un commento