La potenza è nulla senza controllo
| Team sparso, scarsa fiducia | Team coeso, elevata fiducia | |
|---|---|---|
| Progetti piccoli | Singolo branch, multiple fork e pull request. Tipico di piccoli progetti FOSS Il focus è quello di consentire a chiunque di collaborare senza che nessuno possa causare danni |
Singolo Branch, singolo repository dove tutti hanno diritto di push. Tipico di piccoli progetti aziendali (ma anche dei progetti di OOP) Il focus è sulla semplicità del processo, si assume che chi è parte del team non faccia danni e possa quindi scrivere |
| Progetti grandi | Multipli branch, multiple fork e pull request Tipico di grandi progetti FOSS Stesso focus dei progetti open source piccoli, ma in questo caso il progetto, data la complessità, ha multipli branch attivi |
Multipli branch, singolo repository dove tutti hanno diritto di push Tipico di grandi progetti aziendali Nonostante ci sia fiducia che i membri del team collaborino positivamente (e quindi tutti possono scrivere) il progetto è troppo complesso perché tutti insistano sullo stesso branch |
Ottimo per progetti open source dove si vogliano contributi di terzi, e/o per team molto eterogenei, dove qualcuno deve assicurarsi della qualità del codice prodotto da altri.
Definito da Vincent Driessen e spiegato in “A successful git branching model”

feature/<feature-name> o fix/<bug-name>
/ come separatore: feature/<feature-name>, bug/<bug-name>fix, feat, perf…
develop) o in git flow
# Assuming there exists a remote repository called origin
# Create a new feature branch from develop and share it
git checkout develop
git checkout -b feature-mynewfeaturename
git push -u origin feature-mynewfeaturename
# WHILE your_feature_is_unfinished
# work on your feature:
git add mynewfiles
git add mymodifiedfiles
git add mydeletedfiles
git commit -m "my commit message"
# Merge develop in to prevent big merge conflicts!
git pull origin/develop
# You may need to solve a merge conflict here!
# Share and save your work
git push
# END-WHILE
# Merge feature onto develop
git checkout develop
git merge feature-mynewfeaturename
# Push develop
git push
# Delete the feature branch
git branch -d feature-mynewfeaturename
git init,git remoteclonepush e pull il proprio lavoro con gli altri