Sobes.tech
Middle

Kādus darba modeļus ar Git esat izmantojis?

sobes.tech AI

Atbilde no AI

  • Git-flow: Izmantots projektos ar skaidriem išleidimo ciklam. Patogu valdyti funkcijų įrašymą, klaidų taisymą ir išleidimų paruošimą. Sukuria šakas feature, develop, release, hotfix, master.

  • GitHub flow: Izmantots projektos, kur prioritetu teikiami dažni, maži išleidimai. Vienkšā modeļa, balstīta uz vienu galveno šaku (main vai master) un katras funkcijas vai labojuma šakas, kurios tūlīt tiek apvienotas ar galveno šaku pēc pārskatīšanas.

  • Trunk-based development: Izmantots projektos, kuriem nepieciešama augsta integrācijas biežums un nepārtraukta izvietošana. Izstrādātāji veic izmaiņas tieši galvenajā šakā (trunk) vai īslaicīgās šakās, kas ātri tiek apvienotas atpakaļ. Galvenais elements — Feature Toggles.

Papildus šiem galvenajiem modeļiem, tika izmantots:

  • Rebase vs Merge: Atkarībā no situācijas un komandas vienošanās, tika izmantots git rebase, lai saglabātu tīru vēsturi vietējās šakās pirms apvienošanas, un git merge --no-ff, lai saglabātu skaidru apvienošanas vēsturi galvenajā šakā.

    # Rebase piemērs
    git checkout feature/nova-feature
    git pull --rebase origin main 
    # Konfliktu risināšana, ja ir
    git push -f origin feature/nova-feature 
    # Vai pull request apvienošanai ar galveno šaku
    
    # Merge --no-ff piemērs
    git checkout main
    git merge --no-ff feature/nova-feature -m "Merge feature nova-feature into main"
    git push origin main
    
  • Squash and Merge: Bieži tiek izmantots funkciju šaku apvienošanai galvenajā šakā, izmantojot Pull Request. Tas ļauj apvienot vairākus komitus no funkciju šakas vienā tīrā komitā galvenajā šakā.

    # Squash merge piemērs ar Git platformu (GitHub, GitLab)
    # Parasti tiek veikts, apstiprinot Pull Request.
    
  • Cherry-picking: Tiek izmantots, lai pārvietotu konkrētus komitus starp šakām, piemēram, atpakaļportējot labojumus no galvenās šakās uz izlaišanas vai testēšanas šakām.

    # Cherry-pick piemērs
    git checkout release/v1.2
    git cherry-pick <commit_hash>