Sobes.tech
Junior

Wat is squash?

sobes.tech AI

Antwoord van AI

De squash (samenvoegen) in Git is het combineren van meerdere commits tot één. Het maakt de geschiedenis van commits overzichtelijker en leesbaarder.

Meestal wordt squash uitgevoerd bij:

  • Het samenvoegen van een feature branch met de hoofdbranch (feature branch merge). Een korte branch met veel kleine commits (fixes, cosmetische wijzigingen) kan worden samengevoegd tot één grote commit die de volledige functionaliteit vertegenwoordigt.
  • Het bewerken van de commitgeschiedenis (interactieve rebase). Hiermee kunnen opeenvolgende commits worden samengevoegd voor een schonere presentatie van de wijzigingen.

Het squash-proces omvat meestal:

  1. Selectie van commits: Het bepalen van het bereik van commits dat moet worden samengevoegd.
  2. Bewerken (interactieve rebase): Gebruik maken van het commando git rebase -i <commit vóór het bereik> of git rebase -i HEAD~<aantal commits>.
  3. Markeren squash of s: In de geopende editor de commits markeren die moeten worden samengevoegd met de vorige, met het woord squash of de afkorting s. De eerste commit in de lijst blijft met pick.
  4. Bewerken van het bericht: Git opent een editor om een nieuw bericht voor de samengevoegde commit te schrijven.
  5. Toepassen van de wijzigingen: Na het opslaan van het rebase-historie- en berichtbestand voert Git de samenvoeging uit.

Voorbeeld van een interactieve rebase om de laatste drie commits samen te voegen:

git rebase -i HEAD~3
# Een editor opent met regels zoals:
# pick 08f66c1 Commit 1
# pick d7e8a23 Commit 2
# pick 1b2c3d4 Commit 3
# Wijzigen in:
# pick 08f66c1 Commit 1
# squash d7e8a23 Commit 2
# squash 1b2c3d4 Commit 3
# Opslaan en afsluiten. Vervolgens het bericht van de nieuwe commit bewerken.

Voordelen van squash:

  • Schone geschiedenis: Het vermindert het aantal onbeduidende commits, waardoor de wijzigingslogs overzichtelijker worden.
  • Gemakkelijker zoeken: Het is makkelijker om belangrijke wijzigingen te vinden in de geschiedenis.
  • Gemak bij terugdraaien: Eén grote commit is makkelijker terug te draaien dan veel kleine.

Nadelen:

  • Verlies van details: Het samenvoegen van commits leidt tot verlies van informatie over elke kleine stap.
  • Complexiteit in teamwerk: Het samenvoegen van commits die al naar een gedeelde repository zijn gepusht, kan conflicten veroorzaken bij latere pushes door andere teamleden. Voor gepubliceerde commits is het gebruik van git push --force nodig, wat riskant kan zijn.

Het gebruik van squash moet zorgvuldig worden overwogen en hangt af van het teambeleid en de projectkenmerken.