Sobes.tech
Junior — Middle

Mis vahe on käskudel 'git merge' ja 'git rebase' harude ühendamisel Git versioonikontrollis?

sobes.tech AI

Vastus AI-lt

Käsud git merge ja git rebase mõlemad kasutatakse ühe haru muudatuste ühendamiseks teisega, kuid nad teevad seda erineval viisil:

  • git merge loob uue ühendamise commit'i, mis ühendab mõlema haru ajaloo ning säilitab nende paralleelse ajaloo.

    • Näide:
      git checkout master
      git merge feature-branch
      
    • Harude ajalugu jääb harunenud, näidates, millal ja milliseid harusid ühendati.
  • git rebase liigutab (kirjutab ümber) commit'id ühest harust teise, luues lineaarse ajaloo ilma ühendamise commit'ideta.

    • Näide:
      git checkout feature-branch
      git rebase master
      
    • See on nagu alustaksid uut haru viimase commit'i pealt master-il, lihtsustades ajalugu, kuid muutes commit'ide hash'e.

Millal kasutada:

  • merge on kasulik kogu ajaloo säilitamiseks ning kui on oluline läbipaistvus harude vahel.
  • rebase on kasulik ajaloo lihtsustamiseks enne selle ühendamist põhiharuga, et vältida tarbetuid ühendamise commit'e.

Oluline on meeles pidada, et rebase muudab ajaloo, seega ei soovitata teha rebase'i avalikel harudel, mis on juba teistele kättesaadavad.