Sobes.tech
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:

  1. Commit'ide valimine: määrata vahemik commit'idest, mida tuleb ühendada.
  2. Redigeerimine (interaktiivne rebase): kasutada käsku git rebase -i <commit enne vahemikku> või git rebase -i HEAD~<commitite arv>.
  3. squash või s märkimine: avatud redaktoris märkida commit'id, mida tuleb ühendada eelneva commit'iga, sõnaga squash või lühendiga s. Esimene commit jääb pick-ga.
  4. Sõnumi redigeerimine: Git avab redaktori uue sõnumi kirjutamiseks ühendatud commit'ile.
  5. 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.