Files
rezepte-app/GIT_SETUP.md

3.6 KiB

Git Setup & Workflow

Initiales Repository erstellen

# 1. Git Repository initialisieren
git init

# 2. Alle Dateien hinzufügen
git add .

# 3. Ersten Commit erstellen
git commit -m "Initial commit: PHP zu Node.js Migration"

# 4. Main Branch umbenennen (optional, wenn du 'main' statt 'master' willst)
git branch -M main

Remote Repository verbinden

GitHub

# Repository auf GitHub erstellen, dann:
git remote add origin https://github.com/DEIN_USERNAME/recipe-app.git
git push -u origin main

GitLab

git remote add origin https://gitlab.com/DEIN_USERNAME/recipe-app.git
git push -u origin main

Eigener Git-Server

git remote add origin git@dein-server.de:/pfad/zu/recipe-app.git
git push -u origin main

Empfohlene Branch-Strategie

# Feature-Branch erstellen
git checkout -b feature/neue-funktion

# Änderungen committen
git add .
git commit -m "feat: Neue Funktion hinzugefügt"

# In main mergen
git checkout main
git merge feature/neue-funktion

# Feature-Branch löschen
git branch -d feature/neue-funktion

Commit-Konventionen

# Feature
git commit -m "feat: Neue Suchfunktion für Kategorien"

# Bugfix
git commit -m "fix: Bild-Upload bei langen Dateinamen"

# Dokumentation
git commit -m "docs: README aktualisiert"

# Refactoring
git commit -m "refactor: DB-Verbindung optimiert"

# Style
git commit -m "style: CSS für mobile Ansicht verbessert"

# Tests
git commit -m "test: Unit-Tests für Rezept-API"

Wichtige Dateien NICHT in Git

Die .gitignore verhindert, dass folgende Dateien committed werden:

  • node_modules/ - Dependencies (werden via npm install installiert)
  • .env - Enthält sensible Zugangsdaten
  • uploads/ - Benutzergenerierte Bilder (zu groß für Git)

Uploads separat sichern

Da uploads/ nicht in Git ist, erstelle ein separates Backup:

# Backup erstellen
tar -czf uploads-backup-$(date +%Y%m%d).tar.gz uploads/

# Oder mit rsync zu Backup-Server
rsync -avz uploads/ user@backup-server:/backups/recipe-app/uploads/

.env Template

Erstelle eine .env.example für andere Entwickler:

# .env.example (WIRD in Git committed)
PORT=3000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/recipes

Dann:

git add .env.example
git commit -m "docs: .env.example hinzugefügt"

Andere Entwickler kopieren dann:

cp .env.example .env
# Dann .env mit echten Werten anpassen

Git-Befehle Cheatsheet

# Status anzeigen
git status

# Änderungen anzeigen
git diff

# Log anzeigen
git log --oneline

# Bestimmte Datei rückgängig machen
git checkout -- datei.js

# Letzten Commit rückgängig (behält Änderungen)
git reset --soft HEAD~1

# Alle lokalen Änderungen verwerfen
git reset --hard HEAD

# Remote-Änderungen holen
git pull

# Branch wechseln
git checkout branch-name

# Alle Branches anzeigen
git branch -a

GitHub Actions (CI/CD) - Optional

Erstelle .github/workflows/deploy.yml für automatisches Deployment:

name: Deploy

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Deploy to Server
        run: |
          # SSH in deinen Server und Pull+Restart

Zusammenarbeit mit anderen

# Anderen Entwickler hinzufügen
# Auf GitHub: Settings → Collaborators → Add people

# Änderungen holen und mergen
git pull origin main

# Bei Merge-Konflikten
git status  # Zeigt konfliktreiche Dateien
# Dateien manuell bearbeiten und Konflikte lösen
git add .
git commit -m "fix: Merge-Konflikte gelöst"