Sobes.tech
Middle

Milliseid töömustreid Gitiga kasutasite?

sobes.tech AI

Vastus AI-lt

  • Git-flow: Kasutatud projektide puhul, millel on selgelt väljendunud väljalaske tsükkel. Mugav funktsiooni registreerimise, veaparanduste ja väljalaske ettevalmistamise juhtimiseks. Loob harud feature, develop, release, hotfix, master.

  • GitHub flow: Kasutatud projektide puhul, kus eelistatakse sagedasi, väikeseid väljalaskeid. Lihtne mudel, mis põhineb ühel põhiharul (main või master) ja iga funktsiooni või paranduse harul, mis kohe pärast ülevaatust ühendatakse põhiharuga.

  • Trunk-based development: Kasutatud projektide puhul, kus on vaja kõrget integreerimise sagedust ja pidevat juurutamist. Arendajad muudatused teevad otse põhiharusse (trunk) või lühiajalistesse harudesse, mis kiiresti tagasi ühendatakse. Põhielement — Feature Toggles.

Lisaks nendele põhimudelitele kasutati:

  • Rebase vs Merge: Olenevalt olukorrast ja meeskonna kokkuleppest kasutati git rebase, et hoida puhas ajalugu kohalikes harudes enne ühendamist, ning git merge --no-ff, et säilitada selge ühendamise ajalugu põhiharus:

    # Rebase näide
    git checkout feature/nova-feature
    git pull --rebase origin main 
    # Konfliktide lahendamine, kui on
    git push -f origin feature/nova-feature 
    # Või pull requesti kaudu ühendamiseks mainiga
    
    # Merge --no-ff näide
    git checkout main
    git merge --no-ff feature/nova-feature -m "Merge feature nova-feature into main"
    git push origin main
    
  • Squash and Merge: Sageli kasutatakse funktsiooniharude ühendamisel põhiharuga Pull Requesti kaudu. See võimaldab ühendada mitu commit-i funktsiooniharu üheks puhtaks commit-iks põhiharus:

    # Squash merge näide Git platvormil (GitHub, GitLab)
    # Tavaliselt teostatakse Pull Requesti kinnitamisel.
    
  • Cherry-picking: Kasutatakse konkreetsete commit-ide teisaldamiseks harudest, näiteks paranduste backportimiseks põhiharu ja väljalaske või testimise harudesse:

    # Cherry-pick näide
    git checkout release/v1.2
    git cherry-pick <commit_hash>