Sobes.tech
Junior — Middle

Фарқи байни фармонҳои 'git merge' ва 'git rebase' ҳангоми пайваст кардани шохаҳо дар системаи назорати версияи Git чист?

sobes.tech AI

Ҷавоб аз AI

Командҳои git merge ва git rebase ҳар ду барои якҷоя кардани тағйирот аз як шоха ба дигар истифода мешаванд, аммо онҳо ба таври гуногун иҷро мешаванд:

  • git merge як коммити нав барои якҷоя кардани таърихи ҳар ду шоха эҷод мекунад, ки таърихи параллелии онҳоро нигоҳ медорад.

    • Мисол:
      git checkout master
      git merge feature-branch
      
    • Таърихи шохаҳо боқӣ мемонад, нишон медиҳад, кай ва кадом шохаҳо якҷоя карда шудаанд.
  • git rebase (навиштани дубора) коммитҳоро аз як шоха ба болои дигар мегузаронад, ки таърихи хаттӣ бе коммитҳои якҷояро месозад.

    • Мисол:
      git checkout feature-branch
      git rebase master
      
    • Ин мисли он аст, ки шохаро аз охирин коммити master оғоз кунед, таърихиро содда мекунад, аммо хешҳои коммитҳоро тағир медиҳад.

Вақте истифода бурдан:

  • merge барои нигоҳ доштани тамоми таърих ва вақте ки шаффофияти шохакорӣ муҳим аст, қулай аст.
  • rebase барои содда кардани таърих пеш аз пайваст кардан ба шохаи асосӣ, барои пешгирӣ кардани коммитҳои иловагӣ, муфид аст.

Муҳим аст, ки ба ёд оред, ки rebase таърихро тағир медиҳад, бинобар ин, тавсия дода намешавад, ки rebase дар шохаҳои умумӣ, ки аллакай дар дастрасии дигарон ҳастанд, анҷом дода шавад.