Questo articolo Γ¨ una libera traduzione di quanto trovato in questo articolo
Git possiede un comando estremamente potente dal nome singolare: git cherry pic
.
La documentazione su tale comando Γ¨ chiara: dato uno o piΓΉ commit (qualsiasi) del grafo rappresentante la repository, applica i cambiamenti apportati da ognuno ad un branch, creando un nuovo commit per ognuno di essi.
Per capire bene il funzionamento Γ¨ importante sottolineare che un commit Γ¨ identificato univocamente sia dal suo contenuto che dalla sua storia.
Conseguentemente due commit che hanno lo stesso contenuto ma che hanno due padri diversi, per git sono trattati come due commit diversi, senza alcuna relazione tra di loro.
Il comando cherry pic
prende in ingresso un commit (per semplicitΓ lavoro con un singolo commit, la discussione poi Γ¨ analoga per n commit) e applica i cambiamenti che questo ha effettuato sul commit padre, ad un qualsiasi nodo foglia del grafo, creando un nuovo commit con un nuovo SHA-1.
Assumiamo di avere il seguente grafo:
Assumiamo che lβHEAD punti al nodo H del grafo. Effettuando un
git cherry-pick E
creerΓ² un nuovo nodo del grafo figlio di H chiamato Eβ, che apporterΓ ad H i cambiamenti che E ha apportato a D.