Erster commit wie von Claude erstellt (unverändert)
This commit is contained in:
188
GIT_SETUP.md
Normal file
188
GIT_SETUP.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# Git Setup & Workflow
|
||||
|
||||
## Initiales Repository erstellen
|
||||
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
# Repository auf GitHub erstellen, dann:
|
||||
git remote add origin https://github.com/DEIN_USERNAME/recipe-app.git
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
### GitLab
|
||||
```bash
|
||||
git remote add origin https://gitlab.com/DEIN_USERNAME/recipe-app.git
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
### Eigener Git-Server
|
||||
```bash
|
||||
git remote add origin git@dein-server.de:/pfad/zu/recipe-app.git
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
## Empfohlene Branch-Strategie
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
# .env.example (WIRD in Git committed)
|
||||
PORT=3000
|
||||
NODE_ENV=development
|
||||
MONGODB_URI=mongodb://localhost:27017/recipes
|
||||
```
|
||||
|
||||
Dann:
|
||||
```bash
|
||||
git add .env.example
|
||||
git commit -m "docs: .env.example hinzugefügt"
|
||||
```
|
||||
|
||||
Andere Entwickler kopieren dann:
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# Dann .env mit echten Werten anpassen
|
||||
```
|
||||
|
||||
## Git-Befehle Cheatsheet
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```yaml
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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"
|
||||
```
|
||||
Reference in New Issue
Block a user