Git Workflow Cheatsheet¶
Veelgebruikte Git commando's voor het Voedingsgeneeskunde project.
Repository Structuur¶
Repositories¶
- vg-drupal (main project): Live, Preview, Dev environments
- Branch
main→ live.voedingsgeneeskunde.nl - Branch
preview→ prev.voedingsgeneeskunde.nl - Branch
dev→ dev.voedingsgeneeskunde - vg-redactie: Redactie content staging platform
- Branch
main→ redactie.voedingsgeneeskunde.nl
Basis Commando's¶
Status Checken¶
Branches¶
# Alle branches tonen
git branch -a
# Naar andere branch switchen
git checkout preview
git checkout dev
git checkout main
# Nieuwe branch maken
git checkout -b feature/nieuwe-feature
Changes Stagen en Committen¶
# Specifieke bestanden toevoegen
git add web/modules/custom/mijn_module/
# Alles toevoegen (wees voorzichtig!)
git add -A
# Status checken voor commit
git status
# Committen met message
git commit -m "Type: Korte beschrijving
Uitgebreide beschrijving van wat er is veranderd.
Co-Authored-By: Warp <agent@warp.dev>"
Pushen en Pullen¶
# Naar GitHub pushen
git push
# Eerste keer pushen van nieuwe branch
git push -u origin branch-naam
# Laatste changes van GitHub ophalen
git pull
# Fetch zonder merge
git fetch origin
Workflow per Environment¶
Dev Environment¶
cd /var/www/sites/dev.voedingsgeneeskunde
# Werk aan feature
git checkout dev
# ... maak wijzigingen ...
git add .
git commit -m "Feat: Nieuwe feature beschrijving"
git push
# Merge naar preview voor testing
cd /var/www/sites/prev.voedingsgeneeskunde.nl
git checkout preview
git merge dev
git push
Preview Environment¶
cd /var/www/sites/prev.voedingsgeneeskunde.nl
# Na succesvolle test in preview, merge naar main
cd /var/www/sites/live.voedingsgeneeskunde.nl
git checkout main
git merge preview
git push
Live Environment¶
cd /var/www/sites/live.voedingsgeneeskunde.nl
# Pull laatste changes
git pull
# Drupal cache clear na deployment
ldrush cr
# Config import indien nodig
ldrush cim
Redactie (Standalone)¶
cd /var/www/sites/redactie.voedingsgeneeskunde
# Normale workflow
git add .
git commit -m "Update: Beschrijving"
git push
Veelvoorkomende Scenario's¶
Nieuwe Custom Module Toevoegen¶
cd /var/www/sites/dev.voedingsgeneeskunde
# Module code toevoegen
git add web/modules/custom/nieuwe_module/
git status
git commit -m "Feat: Nieuwe module voor [functionaliteit]
- Module info.yml
- Service definitie
- Controller implementatie
Co-Authored-By: Warp <agent@warp.dev>"
git push
Settings.php Changes (Voorzichtig!)¶
# Settings.php staat in .gitignore!
# Alleen documenteer changes in commit message
git commit -m "Docs: Database configuratie aangepast
Settings.php wijzigingen (niet in repo):
- MySQL socket auth geconfigureerd
- Geen wachtwoorden meer
Co-Authored-By: Warp <agent@warp.dev>"
Hotfix op Live¶
cd /var/www/sites/live.voedingsgeneeskunde.nl
# Maak hotfix branch
git checkout -b hotfix/urgent-fix
# Fix maken
git add .
git commit -m "Fix: Urgent bug beschrijving"
# Direct naar main
git checkout main
git merge hotfix/urgent-fix
git push
# Drupal cache
ldrush cr
# Hotfix ook naar preview en dev
cd /var/www/sites/prev.voedingsgeneeskunde.nl
git checkout preview
git merge main
git push
cd /var/www/sites/dev.voedingsgeneeskunde
git checkout dev
git merge main
git push
Composer Dependencies Update¶
cd /var/www/sites/dev.voedingsgeneeskunde
# Update composer
composer update
# Commit composer.lock
git add composer.lock
git commit -m "Chore: Composer dependencies updated
Updated packages:
- drupal/core: 10.x.y -> 10.x.z
- etc.
Co-Authored-By: Warp <agent@warp.dev>"
git push
Conflict Resolution¶
Merge Conflict¶
# Als merge conflict optreedt
git status # Toon conflicted files
# Open files en los conflicts op (tussen <<<< en >>>>)
nano web/modules/custom/module/file.php
# Na oplossen
git add web/modules/custom/module/file.php
git commit -m "Merge: Conflict opgelost in [file]"
git push
Undo Changes¶
# Unstaged changes terug draaien
git checkout -- file.php
# Staged changes unstagen
git reset HEAD file.php
# Laatste commit ongedaan (GEVAARLIJK!)
git reset --soft HEAD~1 # Behoud changes
git reset --hard HEAD~1 # Verwijder changes (VOORZICHTIG!)
Remote Management¶
Remote Bekijken¶
Remote Sync Issues¶
# Als local achterloopt
git fetch origin
git merge origin/main
# Of forceer pull (VOORZICHTIG!)
git pull --rebase
Tips & Best Practices¶
- Altijd status checken voor commit
- Kleine, logische commits
- Een feature = één commit
- Fix per commit
-
Geen "WIP" commits op main/preview/live
-
Beschrijvende commit messages
- Type prefix: Feat, Fix, Docs, Refactor, etc.
- Eerste regel: max 50 karakters
-
Body: waarom, niet wat (code toont wat)
-
Co-author altijd toevoegen
- Safe directory voor mixed ownership
- Drush aliases gebruiken
ldrushvoor liveddrushvoor devpdrushvoor preview (als toegevoegd)-
rdrushvoor redactie -
Deployment checklist volgen
- Test in dev
- Merge naar preview
- Test in preview
- Merge naar main/live
- Drush cr + cim op live
Troubleshooting¶
"Dubious ownership" error¶
"Permission denied" bij push¶
# Check SSH key
ssh -T git@github.com
# Zou moeten tonen: "Hi [username]! You've successfully authenticated"
Files niet staged terwijl ze zouden moeten¶
# Check .gitignore
cat .gitignore | grep [filename]
# Force add als nodig (voorzichtig!)
git add -f web/path/to/file
Branch bestaat niet op remote¶
Nuttige Aliases (optioneel)¶
Voeg toe aan ~/.gitconfig:
[alias]
st = status
co = checkout
br = branch
ci = commit
df = diff
lg = log --oneline --graph --decorate
last = log -1 HEAD