Sobes.tech
Middle

როგორ მუშაობის ნიმუშებს იყენებდით Git-თან?

sobes.tech AI

პასუხი AI-სგან

  • Git-flow: გამოიყენებოდა პროექტებისთვის, სადაც მკაფიო გამოშვების ციკლი იყო. მოსახერხებელია ფუნქციონალის დადასტურების, შეცდომების გამოსწორებისა და გამოშვების მომზადებისთვის. ქმნის ფილიალებს feature, develop, release, hotfix, master.

  • GitHub flow: გამოიყენებოდა პროექტებისთვის, სადაც პრიორიტეტი მიენიჭებოდა ხშირ, მცირე გამოშვებებს. მარტივი მოდელი, დაფუძნებული ერთ ძირითად ფილიალზე (main ან master) და თითოეული ფუნქციის ან გამოსწორების ფილიალებზე, რომლებიც პირდაპირ მერჯებიან ძირითად ფილიალზე განხილვის შემდეგ.

  • Trunk-based development: გამოიყენებოდა პროექტებისთვის, სადაც მაღალი ინტეგრაციის სიხშირე და უწყვეტი განთავსება იყო საჭირო. დეველოპერები უშუალოდ ახდენენ ცვლილებებს ძირითად ფილში (trunk) ან მოკლევადიან ფილიალებში, რომლებიც სწრაფად მერჯებიან უკან. მთავარი ელემენტი — Feature Toggles.

გარდა ამ ძირითად მოდელებისა, გამოიყენებოდა:

  • Rebase vs Merge: სიტუაციიდან და გუნდში შეთანხმებიდან გამომდინარე, გამოიყენებოდა git rebase — სუფთა ისტორიის შენარჩუნებისთვის ადგილობრივ ფილიალებში, და git merge --no-ff — გამოჩენილი ისტორიის შენარჩუნებისთვის ძირითად ფილში:

    # Rebase-ის მაგალითი
    git checkout feature/nova-feature
    git pull --rebase origin main 
    # კონფლიქტების გადაჭრა, თუ არსებობს
    git push -f origin feature/nova-feature 
    # ან მერჯის მოთხოვნა main-ში
    
    # Merge --no-ff-ის მაგალითი
    git checkout main
    git merge --no-ff feature/nova-feature -m "Merge feature nova-feature into main"
    git push origin main
    
  • Squash and Merge: ხშირად გამოიყენებოდა ფიჩა ფილიალების გაერთიანებისას ძირითად ფილში, Pull Request-ის მეშვეობით. საშუალებას აძლევს რამდენიმე კომიტის გაერთიანებას ერთში, სუფთა კომიტად ძირითად ფილში:

    # Squash merge-ის მაგალითი Git პლატფორმის ინტერფეისით (GitHub, GitLab)
    # ჩვეულებრივ, შესრულდება Pull Request-ის დამტკიცებისას.
    
  • Cherry-picking: გამოიყენებოდა კონკრეტული კომიტების გადატანისთვის ფილიალებს შორის, მაგალითად, ძირითადი ფილიდან გამოშვების ან სტეიჯინგის ფილიალებში გამოსწორებების ბექპორტისთვის:

    # Cherry-pick-ის მაგალითი
    git checkout release/v1.2
    git cherry-pick <commit_hash>