Sobes.tech
Middle

Kokius darbo modelius naudojote su Git?

sobes.tech AI

Atsakymas iš AI

  • Git-flow: Naudojau projektuose su aiškiai išreikštu leidimo ciklu. Patogu valdyti funkcijų įrašymą, klaidų taisymą ir leidimų paruošimą. Sukuria šakas feature, develop, release, hotfix, master.

  • GitHub flow: Naudojau projektuose, kur prioritetas teikiamas dažniems, mažiems leidimams. Paprastas modelis, pagrįstas viena pagrindine šaka (main arba master) ir kiekvienos funkcijos ar pataisos šakomis, kurios iš karto sujungiamos su pagrindine šaka po peržiūros.

  • Trunk-based development: Naudojau projektuose, kuriems reikalingas didelis integracijos dažnumas ir nuolatinis diegimas. Kūrėjai tiesiogiai keičia pagrindinę šaką (trunk) arba trumpalaikes šakas, kurios greitai sujungiamos atgal. Pagrindinis elementas — Feature Toggles.

Be šių pagrindinių modelių, naudoja:

  • Rebase vs Merge: Priklausomai nuo situacijos ir komandos susitarimų, naudoju git rebase siekiant išlaikyti švarų įrašų istoriją vietinėse šakose prieš sujungimą, ir git merge --no-ff išlaikyti aiškią sujungimų istoriją pagrindinėje šakoje.

    # Rebase pavyzdys
    git checkout feature/nova-feature
    git pull --rebase origin main 
    # Konfliktų sprendimas, jei yra
    git push -f origin feature/nova-feature 
    # Arba pull request sujungimui į main
    
    # Merge --no-ff pavyzdys
    git checkout main
    git merge --no-ff feature/nova-feature -m "Merge feature nova-feature into main"
    git push origin main
    
  • Squash and Merge: Dažnai taikomas funkcijų šakų sujungimui į pagrindinę šaką per Pull Request. Leidžia sujungti kelis įrašus iš funkcijos šakos į vieną švarų įrašą pagrindinėje šakoje.

    # Squash merge pavyzdys per Git platformos (GitHub, GitLab) sąsają
    # Paprastai atliekama patvirtinant Pull Request.
    
  • Cherry-picking: Naudojamas norint perkelti konkrečius įrašus tarp šakų, pavyzdžiui, grįžtant pataisas iš pagrindinės šakos į leidimo ar testavimo šaką.

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