Middle
Kā jūsu uzņēmumā notiek zarojumu apvienošana (merge) vai vēstures pārrakstīšana (rebase) versiju kontroles sistēmā?
sobes.tech AI
Atbilde no AI
Mūsu komandā mēs ievērojam workflows, kas balstīti uz Git. Lai integrētu izmaiņas, mēs izmantojam divas galvenās pieejas: merge un rebase, izvēloties tās atkarībā no situācijas un zara veida.
Merge:
- Parasti tiek izmantots ilgstošu zaru apvienošanai, piemēram, dev ar main vai funkciju zaru integrācijai dev.
- Izveido apvienošanas commit, kas skaidri rāda, kad notika izmaiņu apvienošana no citiem zariem.
- Saglabā visu commit vēsturi, ieskaitot visas zarojumus.
git checkout dev // Pāreja uz mērķa zaru
git merge feature/new-feature // Funkcijas zara apvienošana
Rebase:
- Tiek izmantots tīras un taisnas vēstures saglabāšanai funkciju zaros līdz to integrācijai (parasti dev).
- Pārvieto pašreizējā zara commit'us uz mērķa (dev) zara virsotni, efektīvi "pārrakstot" vēsturi.
- Vienkāršo vēsturi, izvairoties no merge commit'iem katrai mazai funkcijai vai labojumam.
- Svarīgi: Nekad neveiciet rebase publiskajos zaros, kuros strādā citi izstrādātāji, jo tas var radīt konfliktus.
git checkout feature/new-feature // Pāreja uz funkcijas zaru
git rebase dev // Pārvieto funkcijas zara commit'us uz dev virsotni
// Ja rodas konflikti, tos atrisinām
git push --force-with-lease // Drošam push pēc rebase izmanto --force-with-lease
Mūsu standarta workflows:
- Jauna funkcija vai labojums tiek izstrādāts atsevišķā zarā (feature/..., fix/...).
- Laiku pa laikam (pirms pull request vai sinhronizācijai ar dev) funkcijas zars tiek rebase'ēts uz aktuālo dev. Tas palīdz atrisināt konfliktus agrīni.
- Pēc izstrādes pabeigšanas un koda pārskatīšanas, funkcijas zars apvienojas ar
devarno-ff(non-fast-forward), lai saglabātu apvienošanas informāciju. Vai arī, retāk, saspiež vienā commit'ā pirms mērķa zara apvienošanas, ja tas ir ļoti mazs vai labojums. - No
devperiodiski tiek veikti izlaišanas uzmain(ražošanas) zaru, vienmēr ar merge.
Tādējādi mēs līdzsvarojam commit vēstures saglabāšanu (merge) ar tīras izstrādes zara uzturēšanu (rebase).