Sobes.tech
Middle

Чӣ гуна дар ширкати шумо ҳамҷоя кардани шохаҳо (merge) ё навиштани таърих (rebase) дар системаи назорати нусхаҳо сурат мегирад?

sobes.tech AI

Ҷавоб аз AI

Дар командаи мо, мо workflows, ки бар асоси Git сохта шудаанд, риоя мекунем. Барои ҳамгироии тағйиротҳо ду роҳ асосӣ истифода мебарем: merge ва rebase, ки вобаста ба ҳолат ва навъи шоха интихоб мешаванд.

Merge:

  • Одатан барои ҳамҷоя кардани шохаҳои дарозмуддат, масалан, dev ба main, ё барои ҳамгироии шохаҳои хусусиятӣ ба dev истифода мешавад.
  • Коммити ҳамгироиро месозад, ки равшан нишон медиҳад, кай тағйирот аз шохаҳои дигар ба ҳам дохил шудаанд.
  • Ҳикояи коммитҳоро пурра нигоҳ медорад, аз ҷумла ҳамаи шохаҳо.
git checkout dev  // Ба шохаи мақсадӣ мегузарем
git merge feature/new-feature  // Ҳамгироии шохаи хусусиятиро иҷро мекунем

Rebase:

  • Барои нигоҳ доштани таърихи тоза ва хаттӣ дар шохаҳои хусусиятӣ то ҳамгироии онҳо (одатан ба dev) истифода мешавад.
  • Коммитҳои шохаи ҳозираро ба сари шохаи мақсадӣ (dev) мегузаронад, ки дар натиҷа таърихи "навишта" мешавад.
  • Ҳикояро содда мекунад, аз мерж-коммитҳо барои ҳар як хусусият ё ислоҳӣ худдорӣ мекунад.
  • Муҳим: Ҳегоҳ rebase на шохаҳои умумӣ, ки дигарон кор мекунанд, иҷро накунед, зеро ин метавонад муноқишаҳо эҷод кунад дар кӯшиши кашидани тағйирот.
git checkout feature/new-feature  // Ба шохаи хусусиятӣ мегузарем
git rebase dev  // Коммитҳои шохаи хусусиятиро ба сари dev мегузаронем
// Агар муноқишаҳо пайдо шаванд, онҳоро ҳал мекунем
git push --force-with-lease  // Бо --force-with-lease барои push бехатар истифода мебарем

Стандарти кории мо:

  1. Ҳосил ё ислоҳот дар шохаи алоҳида (feature/..., fix/...) таҳия мешавад.
  2. Дар вақти зарурӣ (пеш аз pull request ё барои синхронгӣ бо dev) шохаи хусусиятӣ rebase мешавад ба dev навтарин. Ин кӯмак мекунад, ки муноқишаҳо дар марҳилаи аввал ҳал шаванд.
  3. Пас аз анҷоми таҳия ва баррасии код, шохаи хусусиятӣ мегардад ба dev бо no-ff (на-тарзи тез), то маълумот дар бораи ҳамгироии шоха нигоҳ дошта шавад. Ё, камтар, бо сквош дар як коммит пеш аз мерж ба dev барои хусусиятҳои хурд ё ислоҳот.
  4. Аз dev ба таври мунтазам релизҳо ба main (шохаи истеҳсолӣ) дода мешаванд, ҳамеша бо истифода аз merge.

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