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 remote
clone
push
e pull
il proprio lavoro con gli altri