Junior
Mis on squash?
sobes.tech AI
Vastus AI-lt
Git'is tähendab mitme commit'i ühendamist üheks. See võimaldab lihtsustada commit'ide ajalugu, muuta see korras ja kergesti loetavaks.
Tavaliselt tehakse squash'i:
- haru ühendamisel põhiharuga (feature branch merge). Lühike haru, millel on palju väikeseid commit'e (parandused, kosmeetilised muudatused), võib ühendada ühe suure commit'iga, mis esindab kogu funktsionaalsust.
- ajaloo redigeerimisel (interactive rebase). See võimaldab järjestikuseid commit'e ühendades muuta muudatuste esitust puhtamaks.
Squash'i protsess hõlmab tavaliselt:
- Commit'ide valimine: määrata vahemik commit'idest, mida tuleb ühendada.
- Redigeerimine (interaktiivne rebase): kasutada käsku
git rebase -i <commit enne vahemikku>võigit rebase -i HEAD~<commitite arv>. squashvõismärkimine: avatud redaktoris märkida commit'id, mida tuleb ühendada eelneva commit'iga, sõnagasquashvõi lühendigas. Esimene commit jääbpick-ga.- Sõnumi redigeerimine: Git avab redaktori uue sõnumi kirjutamiseks ühendatud commit'ile.
- Muutuste rakendamine: faili salvestamise järel rakendab Git ühendamise.
Näide, kuidas ühendada viimased kolm commit'i interaktiivse rebase'iga:
git rebase -i HEAD~3
# Avaneb redaktor, kus on read:
# pick 08f66c1 Commit 1
# pick d7e8a23 Commit 2
# pick 1b2c3d4 Commit 3
# Muuta:
# pick 08f66c1 Commit 1
# squash d7e8a23 Commit 2
# squash 1b2c3d4 Commit 3
# Salvesta ja sulge. Seejärel redigeeri uue commit'i sõnum.
Squash'i eelised:
- Puhas ajalugu: väheneb vähetähtsate commit'ide arv, muudatuste logid on selgemad.
- Otsing lihtsam: on lihtsam leida olulisi muudatusi ajaloos.
- Tagasivõtu mugavus: üks suur commit on lihtsam tagasi võtta kui palju väikeseid.
Puudused:
- Andmete kaotus: commit'ide ühendamine põhjustab teabe kaotuse iga väikese sammu kohta.
- Meeskonnatöö keerukus: ühendatud commit'id, mis on juba jagatud ühisesse hoidlasse, võivad põhjustada konflikte edasistes push'ides. Kasutada tuleb
git push --force, mis võib olla riskantne.
Squash'i kasutamine peaks olema läbimõeldud ning sõltuma meeskonna poliitikast ja projekti spetsiifikast.