3.6 KiB
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 vianpm installinstalliert).env- Enthält sensible Zugangsdatenuploads/- 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"