Sobes.tech
Middle

Ce modele de lucru cu Git ai folosit?

sobes.tech AI

Răspuns de la AI

  • Git-flow: Utilizat pentru proiecte cu un ciclu de lansare clar definit. Este convenabil pentru gestionarea fixărilor funcționalităților, corectărilor de erori și pregătirii pentru lansări. Creează ramuri feature, develop, release, hotfix, master.

  • GitHub flow: A fost aplicat pentru proiecte în care prioritatea o reprezintă lansările frecvente și mici. Model simplu, bazat pe o ramură principală (main sau master) și ramuri pentru fiecare funcție sau corectare, care se fuzionează imediat în ramura principală după revizuire.

  • Dezvoltare bazată pe trunk: Practicată pentru proiecte care necesită o frecvență ridicată de integrare și implementare continuă. Dezvoltatorii aduc modificări direct în ramura principală (trunk) sau în ramuri de scurtă durată, care se fuzionează rapid înapoi. Element cheie — Feature Toggles.

Pe lângă aceste modele principale, s-a folosit:

  • Rebase vs Merge: În funcție de situație și de acordurile din echipă, s-a folosit git rebase pentru a menține o istorie curată a commit-urilor în ramurile locale înainte de merge, și git merge --no-ff pentru a păstra o istorie explicită a fuziunilor în ramura principală.

    # Exemplu rebase
    git checkout feature/nouă-funcție
    git pull --rebase origin main 
    # Rezolvarea conflictelor, dacă există
    git push -f origin feature/nouă-funcție 
    # Sau pull request pentru merge în main
    
    # Exemplu merge --no-ff
    git checkout main
    git merge --no-ff feature/nouă-funcție -m "Fuziune feature/nouă-funcție în main"
    git push origin main
    
  • Squash and Merge: Adesea utilizat la fuziunea ramurilor de funcții în ramura principală prin Pull Request. Permite combinarea mai multor commits din ramura de funcție într-un singur commit curat în ramura principală.

    # Exemplu de squash merge prin interfața platformei Git (GitHub, GitLab)
    # De obicei se face la confirmarea Pull Request.
    
  • Cherry-picking: Utilizat pentru transferul anumitor commits între ramuri, de exemplu, pentru backporting de corectări din ramura principală în ramura de lansare sau staging.

    # Exemplu cherry-pick
    git checkout release/v1.2
    git cherry-pick <commit_hash>