Skip to content

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

# Huidige status
git status

# Wijzigingen bekijken
git diff

# Log bekijken
git log --oneline -10

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

# Toon remotes
git remote -v

# Remote details
git remote show origin

Remote Sync Issues

# Als local achterloopt
git fetch origin
git merge origin/main

# Of forceer pull (VOORZICHTIG!)
git pull --rebase

Tips & Best Practices

  1. Altijd status checken voor commit
git status
git diff
  1. Kleine, logische commits
  2. Een feature = één commit
  3. Fix per commit
  4. Geen "WIP" commits op main/preview/live

  5. Beschrijvende commit messages

  6. Type prefix: Feat, Fix, Docs, Refactor, etc.
  7. Eerste regel: max 50 karakters
  8. Body: waarom, niet wat (code toont wat)

  9. Co-author altijd toevoegen

Co-Authored-By: Warp <agent@warp.dev>
  1. Safe directory voor mixed ownership
git config --global --add safe.directory /var/www/sites/[site-name]
  1. Drush aliases gebruiken
  2. ldrush voor live
  3. ddrush voor dev
  4. pdrush voor preview (als toegevoegd)
  5. rdrush voor redactie

  6. Deployment checklist volgen

  7. Test in dev
  8. Merge naar preview
  9. Test in preview
  10. Merge naar main/live
  11. Drush cr + cim op live

Troubleshooting

"Dubious ownership" error

git config --global --add safe.directory $(pwd)

"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

# Eerst pushen met upstream
git push -u origin branch-naam

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

Emergency: Alles Terug Naar Laatste Commit

# VOORZICHTIG: Dit verwijdert alle uncommitted changes
git reset --hard HEAD
git clean -fd

# Drupal cache ook clearen
drush cr