Sobes.tech
Middle

Git versiya idarəetmə sistemində merge və rebase əmrləri arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

merge filialı iki valideyi yeni bir commit yaradaraq birləşdirir və dəyişikliklərin tarixçəsini saxlayır. rebase bir filialın commitlərini digərinin üstünə köçürür, tarixi xətkeşli edir, lakin commit hashlərini dəyişdirir.

  • merge ilə:

    • Yeni birləşdirmə commit-i yaradılır.
    • Filialların tarixi açıq qalır.
    • Konfliktlər baş verə bilər və yeni commit-də həll olunur.
    # Merge nümunəsi
    git checkout feature-branch
    git merge main
    # Konfliktləri həll et, varsa
    git commit -m "main-i feature-branch-ə birləşdir"
    
  • rebase ilə:

    • Commitlər "köçürülür" və hədəf filialın üstünə tətbiq olunur.
    • Tarix xətkeşli olur, daha təmiz görünə bilər.
    • Köçürülən commitlərin hashləri dəyişir.
    • Hər köçürülən commit üçün konflikt baş verə bilər.
    • Bu, artıq nəşr olunmuş və digər inkişaf etdiricilər tərəfindən istifadə olunan filiallar üçün tövsiyə edilmir, çünki tarixi dəyişir.
    # rebase nümunəsi
    git checkout feature-branch
    git rebase main
    # Konfliktləri həll et, varsa (hər konfliktli commit üçün təkrarla)
    git add .
    git rebase --continue
    # və ya git rebase --skip, commit-i keçmək üçün
    # və ya git rebase --abort, ləğv etmək üçün
    
Xüsusiyyət merge rebase
Tarix dəyişiklikləri Tarixi saxlayır Tarixi dəyişir (yenidən yazar)
Commitlər Merge commit yaradır Mövcud commitləri köçürür
Xəttəvi tarix Yox (filiallar ayrılır) Bəli (tarixi sadələşdirir)
Yanaşma Törədici olmayan Potensial olaraq dağıdıcı
Tətbiq sahəsi İctimai, ümumi filialar Lokal, şəxsi filialar