Sobes.tech
Middle

Тафовут байни фармонҳои merge ва rebase дар системаи идоракунии версияҳои Git чист?

sobes.tech AI

Ҷавоб аз AI

merge шохаҳои гуногунро бо эҷоди як коммити нав бо ду падар муттаҳид мекунад, таърихи тағиротро нигоҳ медорад. rebase коммити як шохаро ба болои дигар мегузаронад, таърихи онро хаттӣ мекунад, аммо hash-ҳои коммитҳоро тағир медиҳад.

  • Дар merge:

    • Як коммити нав барои якҷоягӣ эҷод мешавад.
    • Таърихи шохаҳо равшан мемонад.
    • Мумкин аст, ки муноқишаҳо пайдо шаванд, ки дар коммити нав ҳал карда мешаванд.
    # Намунаи истифодаи merge
    git checkout feature-branch
    git merge main
    # Ҳал кардани муноқишаҳо, агар ҳастанд
    git commit -m "Муштарак кардани main ба feature-branch"
    
  • Дар rebase:

    • Коммитҳо "гузаронида" мешаванд ва ба болои шохаҳои мақсадӣ татбиқ мешаванд.
    • Таърихи хаттӣ мешавад, метавонад "тазаваттар" ба назар расад.
    • Hash-ҳои коммитҳои гузаронидашуда тағир меёбанд.
    • Мумкин аст, ки муноқиша барои ҳар коммити гузаронидашуда пайдо шавад.
    • Ин тавсия дода намешавад барои шохаҳое, ки аллакай нашр шудаанд ва дигарон истифода мебаранд, зеро таърихи онро тағир медиҳад.
    # Намунаи истифодаи rebase
    git checkout feature-branch
    git rebase main
    # Ҳал кардани муноқишаҳо, агар ҳастанд (барои ҳар муноқиша қайтро такрор кунед)
    git add .
    git rebase --continue
    # ё git rebase --skip барои гузаштан аз коммит
    # ё git rebase --abort барои бекор кардан
    
Хусусият merge rebase
Таърихи тағирот Ҳифз мекунад таърихро Меъёр мекунад таърихро (навишта мешавад)
Commit-ҳо Эҷод мекунад commit-и нав барои якҷоягӣ Гузаронидашудаи commit-ҳоро мегузарад
Хати таърих Не (шохаҳо фарқ мекунанд) Бале (тартибро содда мекунад)
Назари Неструктурӣ Потенсиалӣ нобудкунанда
Истифода Шохаҳои умумӣ ва ҷамъиятӣ Шохаҳои маҳаллӣ ва шахсӣ