Ho cercato di avvolgere i modelli di ramificazione git. Ho guardato lo http://nvie.com/posts/a-successful-git-branching-model/ per alcune idee e provenendo da Subversion, una cosa che non vedevo l'ora di fare un cambiamento in un singolo posto e unirlo a tutte le filiali che lo richiedevano. In Subversion, abbiamo finito per fare molta copia del codice in giro.Git che unisce la correzione a più rami
Tuttavia, ancora non lo capisco completamente. Ecco un tipo di flusso di lavoro standard che ho e conterrà sempre conflitti.
# create new version branch
git checkout master
git checkout -b v3
vim pom.xml # change branch version to "3.1-SNAPSHOT"
git commit -a
git checkout master
vim pom.xml # change master version to "4.0-SNAPSHOT"
git commit -a
Così il maestro è a 4.0-SNAPSHOT e il ramo è a 3.1-SNAPSHOT.
Non voglio creare una correzione sul ramo e spostarlo nel bagagliaio.
git checkout v3
git checkout -b hotfix
vim file.txt # make a bugfix change
git commit -a
git checkout v3
git merge hotfix # this works fine
git checkout master
git merge hotfix # this has a conflict since both branches have changed the version
Capisco perché è successo e ha senso. C'è un modo migliore per farlo?
ho letto su cherry-pick, che ho provato e funziona:
git checkout v3
git cherry-pick a518b0b75eaf28868
git checkout master
git cherry-pick a518b0b75eaf28868
Tuttavia, che non sembra come il modo "corretto" per gestire questa situazione. Eventuali suggerimenti?
Concordo (anche se penso che la risposta di @ ellotheth possa essere più elegante a seconda delle circostanze). Secondo git's [branching philosophy] (http://gitster.livejournal.com/42247.html) tu davvero sono dicendo che questo commit è l'unica cosa che appartiene a tutti i rami. Quindi la raccolta delle ciliegie è ciò che "dice" quello. –
Grazie, penso che abbia senso. Venendo da Subversion, e quanto a volte fosse doloroso per noi spingere le correzioni al tronco e ai rami (fondamentalmente facendo la correzione due volte), avevo pensato nella mia mente che potevo semplicemente unire rami di funzionalità ovunque io volessi. Quando non funzionava come mi aspettavo, ero piuttosto stanco. "cherry-pick" ha un sacco di senso però. Ho solo bisogno di elaborare un processo che sia facile da comprendere per tutti gli sviluppatori e penso che ciò possa essere reso abbastanza chiaro. –