Sobes.tech
Middle

Koje obrasce rada sa Git ste koristili?

sobes.tech АИ

Одговор од АИ

  • Git-flow: Koristi se za projekte sa jasno definisanim ciklusom izdanja. Pogodan za upravljanje funkcijama, ispravkama grešaka i pripremom za izdanja. Kreira grane feature, develop, release, hotfix, master.

  • GitHub flow: Primenjivao se za projekte gde je prioritet često, mala izdanja. Jednostavan model zasnovan na jednoj glavnoj grani (main ili master) i granama za svaku funkciju ili ispravku, koje se odmah spajaju u glavnu granu nakon pregleda.

  • Razvoj zasnovan na trunk: Praktikovan za projekte koji zahtevaju visoku frekvenciju integracije i kontinuirano implementiranje. Programeri unose promene direktno u glavnu granu (trunk) ili kratkotrajne grane, koje se brzo spajaju nazad. Ključni element — Feature Toggles.

Pored ovih osnovnih obrazaca, koristili su se:

  • Rebase vs Merge: U zavisnosti od situacije i dogovora u timu, koristio se git rebase za održavanje čiste istorije commitova u lokalnim granama pre spajanja, i git merge --no-ff za očuvanje eksplicitne istorije spajanja u glavnoj grani.

    # Primer rebase
    git checkout feature/nova-funkcija
    git pull --rebase origin main 
    # Rešavanje konflikata, ako ih ima
    git push -f origin feature/nova-funkcija 
    # Ili pull request za spajanje u main
    
    # Primer merge --no-ff
    git checkout main
    git merge --no-ff feature/nova-funkcija -m "Spajanje feature/nova-funkcija u main"
    git push origin main
    
  • Squash and Merge: Često se primenjivao pri spajanju funkcionalnih grana u glavnu granu putem Pull Request-a. Omogućava objedinjavanje više commit-ova iz funkcionalne grane u jedan čist commit u glavnoj grani.

    # Primer squash merge preko interfejsa Git platforme (GitHub, GitLab)
    # Obično se vrši pri potvrdi Pull Request-a.
    
  • Cherry-picking: Koristi se za prenos specifičnih commit-ova između grana, na primer, za backporting ispravki iz glavne grane u izdavačku ili staging granu.

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