Von leerem Verzeichnis zum ersten Push – Schritt für Schritt
Bevor es losgeht, stelle sicher dass folgendes vorhanden ist:
Im Browser auf die Gitea-Oberfläche gehen und ein neues Repository erstellen:
Gitea zeigt danach die Repository-URL an. Diese URL wird in Schritt 3 gebraucht.
Es gibt zwei Wege — je nachdem ob das Repo neu oder bereits vorhanden ist:
Variante A – Neues leeres Verzeichnis
# In das Projektverzeichnis wechseln (oder neu anlegen)
cd C:\Users\dein-name\Desktop\mein-projekt
# Git-Repository initialisieren
git init
Nach git init wird ein versteckter .git-Ordner angelegt – ab jetzt ist das Verzeichnis ein Git-Repository.
Variante B – Bestehendes Repo direkt klonen (empfohlen wenn das Repo bereits Inhalt hat)⚡ Test für Marcus
git clone https://git.cloudyday.ddnss.de/kai/git-test.git
Variante C – Vorhandene lokale Daten in leeres Gitea-Repo importieren
Du hast Daten bereits lokal in einem Verzeichnis und das Repository auf Gitea ist noch leer? Dann dieses Verzeichnis als Git-Projekt initialisieren, committen und anschließend mit Gitea verknüpfen:
# Git im aktuellen Ordner starten
git init
# Alle vorhandenen Dateien für den ersten Commit vormerken
git add .
# Den ersten Stand lokal speichern
git commit -m "Initialer Import meiner Daten"
git remote add origin https://git.cloudyday.ddnss.de/Kai/DEIN_REPO_NAME.git
git push -u origin master
Das lokale Repository mit dem Gitea-Repository auf der Synology verknüpfen:
git remote add origin https://git.cloudyday.ddnss.de/kai/git-test.git
Prüfen ob die Verbindung gesetzt wurde:
git remote -v
Ausgabe sollte so aussehen:
origin https://git.cloudyday.ddnss.de/kai/git-test.git (fetch)
origin https://git.cloudyday.ddnss.de/kai/git-test.git (push)
Eine Datei anlegen, stagen und den ersten Commit erstellen:
# Alle Dateien zum Staging-Bereich hinzufügen
git add .
# Status prüfen – zeigt was committet wird
git status
# Commit erstellen
git commit -m "Erster Commit"
Wenn das Repository bereits Inhalt hat, zuerst den aktuellen Stand herunterladen:
git pull origin master
Danach eigene Änderungen hochladen:
git push -u origin master
Git fragt beim ersten Mal nach Benutzername und Passwort des Gitea-Kontos. Danach reicht für alle weiteren Pushes:
git push
Passwort nicht jedes Mal eingeben — einmalig speichern mit:
git config --global credential.helper store
Claude Code im Projektverzeichnis starten:
cd C:\Users\dein-name\Desktop\mein-projekt
claude
Claude liest das gesamte Verzeichnis und kann direkt loslegen. Beispiele was man einfach per Chat erledigen kann:
Claude kann auch Git-Befehle direkt ausführen — einfach im Chat eingeben:
# ! vor dem Befehl leitet ihn ans Terminal weiter
! git status
! git log --oneline
! git pull
Manche Dateien sollen nicht ins Repository — z.B. Passwörter, lokale Konfigurationen oder der node_modules-Ordner. Dafür gibt es die .gitignore-Datei im Projektverzeichnis.
# Node.js Abhängigkeiten
node_modules/
# Umgebungsvariablen & Passwörter
.env
*.env
# Betriebssystem-Dateien
.DS_Store
Thumbs.db
# Editor-Einstellungen
.vscode/
.idea/
Die Datei einfach im Projektverzeichnis anlegen — Git ignoriert dann alles was darin steht automatisch.
Ein Branch ist eine eigene Entwicklungslinie — ideal um neue Features auszuprobieren ohne den Hauptstand zu gefährden.
# Neuen Branch anlegen und direkt wechseln
git checkout -b mein-feature
# Änderungen committen (wie gewohnt)
git add .
git commit -m "Feature XY hinzugefügt"
# Branch auf Gitea pushen
git push -u origin mein-feature
# Zurück zum Hauptbranch wechseln
git checkout master
# Branch einmergen
git merge mein-feature
Aktuellen Branch anzeigen:
git branch
Nach jedem Push vom PC muss auf der Synology git pull ausgeführt werden damit die Änderungen live gehen. Das läuft über SSH:
# Per SSH verbinden
ssh benutzer@synology-ip
# In das Projektverzeichnis wechseln
cd /volume1/web/git-test
# Änderungen holen
git pull
# Falls Docker-Container beteiligt sind, neu starten
docker compose up -d --build
Typischer Workflow:
| git init | Neues Git-Repository im aktuellen Verzeichnis anlegen |
| git status | Zeigt geänderte, neue und bereits gestagte Dateien an |
| git add . | Alle Änderungen zum nächsten Commit vormerken (stagen) |
| git add <datei> | Nur eine bestimmte Datei stagen |
| git commit -m "…" | Gestagete Änderungen als Snapshot speichern |
| git push | Lokale Commits auf Gitea hochladen |
| git pull | Änderungen von Gitea herunterladen und einmergen |
| git log --oneline | Kompakte Übersicht aller bisherigen Commits |
| git diff | Zeigt alle nicht-gestagte Änderungen im Detail |
| git checkout -b <name> | Neuen Branch anlegen und direkt wechseln |
| git remote add origin <url> | Remote-Repository verknüpfen |
| git clone <url> | Vorhandenes Repository herunterladen |
Der deploy-agent aus diesem Repo kann in jedes andere Projekt übernommen werden. Damit Claude ihn direkt anpassen kann, einfach folgende Infos mitgeben:
| Projektname / Repo | Wie heißt das Ziel-Repository auf Gitea? |
| Verzeichnis (Synology) | Wo liegt das Projekt auf der Synology? z.B. /volume1/web/mein-projekt |
| Port | Auf welchem Port soll der deploy-agent laufen? (aktuell 3047 — darf nicht doppelt vergeben sein) |
| Container-Namen | Welche Container sollen nach dem Push neu gebaut werden? (aus dem compose.yaml des Projekts) |
Beispiel-Nachricht an Claude:
Ich möchte den deploy-agent in mein Projekt "mein-projekt" übertragen.
Verzeichnis auf der Synology: /volume1/web/mein-projekt
Port: 3048
Container die neu gebaut werden sollen: mein-projekt-backend, mein-projekt-static
Webhook in Gitea einrichten
Im Gitea-Repository unter Einstellungen → Webhooks → Webhook hinzufügen → Gitea folgende Werte eintragen:
| Ziel-URL | http://<synology-ip>:<port>/deploy?token=<WEBHOOK_SECRET> z.B. http://192.168.1.100:3047/deploy?token=meinGeheimnis |
| HTTP-Methode | POST |
| Content-Type | application/json |
| Auslöser | Push-Events |
| Aktiv | ✓ Haken setzen |
Nach dem Speichern kann der Webhook direkt mit „Testen" geprüft werden — der deploy-agent sollte mit 200 OK antworten.
„Your local changes would be overwritten by merge"
# Lokale Änderungen an einer Datei verwerfen
git checkout <dateiname>
# Dann erneut pullen
git pull
„Please tell me who you are" (kein Name/E-Mail gesetzt)
git config --global user.name "Dein Name"
git config --global user.email "email@beispiel.de"
„rejected – non-fast-forward" beim Push
# Erst pullen, dann pushen
git pull
git push