Quando ci avviciniamo al mondo dell’open source, è fondamentale avere una conoscenza approfondita di git, perché in sostanza è l’unico strumento generalmente accettato per la gestione del codice fra gli sviluppatori, date le sue grandi doti di gestione, validazione e semplicità d’adozione. Quando navighiamo un repository Git ci troviamo spesso davanti ai termini fork e clone, e nonostante essi rappresentano concetti semplici, può succedere di fare un po’ di confusione.

Vediamoli quindi nel dettaglio per capire quale metodo è più adatto quando lavoriamo ad un progetto, sia privato che open source.

Fork

Un fork è la copia di un repository che ci permette di sperimentare qualsiasi cambiamento vogliamo senza modificare il progetto principale. Questo “fork” è diverso da “un clone” proprio per il fatto che esso mantiene una connessione con il progetto originario. In questo modo, il nostro fork è una specie di ponte tra il progetto da cui proviene e la nostra copia personale, sulla quale possiamo lavorare liberamente e magari contribuire proprio al progetto originario tramite una pull request.

Sulle varie piattaforme (come ad esempio GitHub), fare un fork è in genere molto semplice: troveremo un pulsante Fork nell’header del repository. Alla fine dell’operazione di forking, ci troveremo davanti la copia del progetto e potremo metterci subito mano.

Clone

Un clone è anch’esso la copia completa di un repository, ma la differenza principale con il fork è che esso è una copia “staccata”: non saremo poi in grado di integrare le nostre modifiche nel repository principale, tranne in alcuni casi nei quali ad esempio saremo invitati. Un clone è l’operazione più diffusa quando vogliamo utilizzare “il contenuto” (inteso come l’app, lo script, etc.) di quel repository, ma non vogliamo contribuire. Un esempio su tutti: potremmo scaricare WordPress direttamente facendo il clone dal repository originale ed utilizzarlo. Come per il fork, l’operazione è di solito ancora più semplice, troveremo il comando Clone oppure potremmo direttamente eseguirlo da console con git clone. Spesso un clone può farci da backup.