Sobes.tech
Middle

Git bilan ishlash shablonlaringiz qanday?

sobes.tech AI

AIdan javob

  • Git-flow: Aydınlıqla müəyyən edilmiş buraxılış dövrü olan layihələr üçün istifadə olunur. Funksiyaların, səhv düzəlişlərinin və buraxılışların hazırlanmasını idarə etmək üçün əlverişlidir. feature, develop, release, hotfix, master şaxələrini yaradır.

  • GitHub flow: Tez-tez və kiçik buraxılışlara üstünlük verilən layihələrdə tətbiq olunur. Sadə model, əsas şaxə (main və ya master) və hər bir xüsusiyyət və ya düzəliş üçün şaxələr üzərində qurulmuşdur və nəzərdən keçirildikdən sonra dərhal əsas şaxəyə birləşdirilir.

  • Trunk əsaslı inkişaf: Yüksək inteqrasiya və davamlı yerləşdirmə tələb edən layihələrdə praktikadır. Tərtibatçılar dəyişiklikləri birbaşa əsas şaxəyə (trunk) və ya qısa ömürlü şaxələrə edir və sürətlə geri birləşdirilir. Əsas element — Feature Toggles.

Bu əsas nümunələrdən əlavə, istifadə olunmuşdur:

  • Rebase vs Merge: Vəziyyətə və komanda razılaşmalarına görə, git rebase yerli şaxələrdə təmiz commit tarixçəsini saxlamaq üçün istifadə olunurdu və git merge --no-ff əsas şaxədə açıq birləşmə tarixçəsini saxlamaq üçün.

    # Rebase nümunəsi
    git checkout feature/yeni-özəllik
    git pull --rebase origin main 
    # Münaqişələrin həlli, varsa
    git push -f origin feature/yeni-özəllik 
    # Yaxud merge üçün pull request
    
    # Merge --no-ff nümunəsi
    git checkout main
    git merge --no-ff feature/yeni-özəllik -m "Feature yeni-özəllik əsas şaxəyə birləşdirildi"
    git push origin main
    
  • Squash and Merge: Xüsusilə funksional şaxələrin əsas şaxəyə birləşdirilməsində istifadə olunur. Bir neçə commit funksional şaxədən tək bir təmiz commitə çevrilir.

    # Git platforması vasitəsilə squash merge nümunəsi (GitHub, GitLab)
    # Adətən Pull Request təsdiqləndikdə həyata keçirilir.
    
  • Cherry-picking: Müəyyən commitləri şaxələr arasında köçürmək üçün istifadə olunur, məsələn, əsas şaxədən buraxılış və ya staging şaxəsinə düzəlişlərin geri köçürülməsi üçün.

    # Cherry-pick nümunəsi
    git checkout release/v1.2
    git cherry-pick <commit_hash>