Sobes.tech
Middle

Milyen mintákat használtál a Git-tel való munkához?

sobes.tech MI

Válasz az MI-től

  • Git-flow: Egyértelműen meghatározott kiadási ciklusú projektekhez használt. Hasznos funkciófixek, hibajavítások és kiadások előkészítésének kezelésére. Létrehozza az feature, develop, release, hotfix, master ágakat.

  • GitHub flow: Gyakran és kis méretű kiadásokra helyezett prioritással alkalmazott modell. Egyszerű modell, amely egy fő ágra (main vagy master) és minden funkció vagy javítás számára külön ágakat használ, amelyek az áttekintés után azonnal összeolvadnak a fő ággal.

  • Trunk-alapú fejlesztés: Magas integrációs és folyamatos telepítési igényű projektekhez alkalmazott. A fejlesztők közvetlenül a fő ágba (trunk) vagy rövid életű ágakba módosítanak, amelyek gyorsan visszafusolódnak. Kulcselem — Feature Toggles.

Ezeken kívül a fő minták mellett használták:

  • Rebase vs Merge: A helyzettől és a csapat megállapodásaitól függően, a git rebase-t használták a helyi ágak tiszta történetének fenntartására a merge előtt, és a git merge --no-ff-t a nyilvánvaló merge-történet megőrzésére.

    # Rebase példa
    git checkout feature/új-funkció
    git pull --rebase origin main 
    # Konfliktusok megoldása, ha vannak
    git push -f origin feature/új-funkció 
    # Vagy pull request a merge-hez main-be
    
    # Merge --no-ff példa
    git checkout main
    git merge --no-ff feature/új-funkció -m "Feature új-funkció merge a main-be"
    git push origin main
    
  • Squash and Merge: Gyakran alkalmazott a funkcióágak fő ágba való egyesítésénél Pull Request segítségével. Lehetővé teszi, hogy több commitot egyetlen tiszta commitba egyesítsenek a fő ágon.

    # Squash merge példa Git platformon (GitHub, GitLab)
    # Általában a Pull Request megerősítésekor történik.
    
  • Cherry-picking: Kifejezetten kiválasztott commitokat mozgatnak át ágak között, például a fő ágból a kiadási vagy staging ágakba történő visszavitelhez.

    # Cherry-pick példa
    git checkout release/v1.2
    git cherry-pick <commit_hash>