Git Worktrees

Geavanceerd Git

Amanda Crawford-Adamo

Software and Data Engineer

Wat is een Git Worktree?

Git Worktree-commando

git worktree
  • Kan meerdere branches tegelijk “checkouten”.
  • Lijkt op repo-checkout, maar efficiënter
  • Geen stash nodig
  • Niet switchen tussen branches tijdens development

Een nepboom opgebouwd uit cirkels en lijnen

Geavanceerd Git

Git Worktree versus Git Switch

Deze tabel vergelijkt git worktree met git switch in een developmentworkflow. $$

Git Worktree Git Switch
Meerdere actieve branches Eén actieve branch tegelijk
Gescheiden mappen Eén werkmap
Geen stash nodig Kan stashing vereisen
Geavanceerd Git

Een Git Worktree maken

Maak een nieuwe worktree van <branch> in map <path>

git worktree add <path> <branch>

Voorbeeld

Maak een nieuwe worktree van de branch bugfix/data-validation in de map ../etl-bugfix

git worktree add ../etl-bugfix bugfix/data-validation
Geavanceerd Git

Worktrees opvragen en verwijderen

  • Lijst alle actieve worktrees op: git worktree list

Voorbeelduitvoer

$ git worktree list
flight-pipeline            a1b2c3d [main]
flight-pipeline-feature    e4f5g6h [feature]
flight-pipeline-hotfix     i7j8k9l [hotfix]
  • Verwijder een worktree op een <path>: git worktree remove <path>

Voorbeelduitvoer

$ git worktree remove flight-pipeline-hotfix
flight-pipeline-hotfix: deleted
Geavanceerd Git

Wanneer Git Worktrees gebruiken

Wanneer gebruiken:

  • Tegelijk aan meerdere features werken
  • Snel bugs fixen zonder lopend werk te storen
  • Tests parallel op verschillende branches draaien
  • Code reviews doen terwijl je doorontwikkelt

Herzien als:

  • Schijfruimte beperkt is
  • Projecten vaak updaten en complex mergen
Geavanceerd Git

Best practices voor Git Worktrees

Tips voor Git worktrees:

  1. Gebruik duidelijke namen voor worktree-mappen
  2. Ruim ongebruikte worktrees regelmatig op
  3. Let op schijfruimte, zeker bij grote projecten
  4. Gebruik worktrees voor kort parallel werk om verwarring te voorkomen
Geavanceerd Git

Laten we oefenen!

Geavanceerd Git

Preparing Video For Download...