> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Anwendungen mit der CLI hochladen und aktualisieren

> Deploye einen Ordner mit squarecloud upload als neue App, sende Änderungen mit squarecloud commit und prüfe den Zip-Inhalt mit squarecloud zip.

* **`upload`** erstellt eine **neue** Anwendung mit einer neuen ID.
* **`commit`** sendet Dateien an eine **bereits bestehende** Anwendung und behält ihre ID, Domain und Einstellungen bei.
* **`zip`** erstellt dasselbe Zip lokal, ohne es zu senden, damit du prüfen kannst, was darin landet.

`upload` und `commit` gibt es auch unter `squarecloud app` (`squarecloud app upload`, `squarecloud app commit`). Neu hier? Beginne mit dem [Schnellstart](/de/cli-reference/quickstart).

## Was im Zip landet

`upload`, `commit` und `zip` zippen den aktuellen Ordner und lassen weg, was die Datei [`squarecloud.ignore`](/de/getting-started/squarecloud-ignore) im Stammverzeichnis des Projekts aufführt. Sie verwendet die `.gitignore`-Syntax und ist dieselbe Datei, die auch die [VS Code-Erweiterung](/de/vscode-extension/features#ignore-regeln) liest.

* **Immer zuerst weggelassen:** `node_modules`, `.git`, `.github`, `.vscode`, `package-lock.json`, `pnpm-lock.yaml` und `yarn.lock`. Abhängigkeiten werden auf der Plattform anhand deines Manifests installiert. Wenn du eine Lock-Datei mitsenden möchtest, weil du feste Versionen brauchst, füge eine `!`-Regel hinzu, etwa `!package-lock.json`.
* **Links:** Ein symbolischer Link auf eine Datei wird als diese Datei gezippt; Links auf Ordner und defekte Links werden mit einem Hinweis auf stderr übersprungen.
* **Ältere Dateinamen** (`.squareignore`, `.squarecloudignore`, `square.ignore`) werden weiterhin gelesen, wenn `squarecloud.ignore` fehlt, mit einer Warnung, die Datei umzubenennen.

## `squarecloud upload`

```bash Verwendung theme={"system"}
squarecloud upload [--file <path>] [--json]
```

Zippt den aktuellen Ordner und erstellt daraus eine neue Anwendung. Der Ordner benötigt eine Datei [`squarecloud.app` oder `squarecloud.config`](/de/getting-started/config-file).

| Flag | Beschreibung |
| - | - |
| `--file <path>` | Lädt ein bereits vorhandenes Zip hoch, statt den aktuellen Ordner zu zippen. Relative und absolute Pfade funktionieren. |

```bash theme={"system"}
squarecloud upload
# Zippt den aktuellen Ordner und deployt ihn als neue Anwendung.
```

```bash theme={"system"}
squarecloud upload --file ./build/my-app.zip
# Lädt ein vorhandenes Zip hoch.
```

```bash Ausgabe theme={"system"}
Compressing the current directory.
Uploading the zip file to Square Cloud.

✓ Application uploaded to Square Cloud!
  Open it at https://squarecloud.app/dashboard/applications/<appID>
```

Nach einem erfolgreichen Upload schreibt die CLI `ID=<appID>` in die Konfigurationsdatei des aktuellen Ordners, damit spätere Befehle wissen, welche Anwendung gemeint ist. Siehe [Wo die Anwendungs-ID gespeichert wird](/de/cli-reference/quickstart#wo-die-anwendungs-id-gespeichert-wird).

Mit `--json` enthält stdout nur die erstellte Anwendung (ID, Name, Beschreibung, Domain, Cluster, Arbeitsspeicher, CPU und Sprache) als JSON; Fortschrittsmeldungen gehen nach stderr.

## `squarecloud commit`

```bash Verwendung theme={"system"}
squarecloud commit [appID] [--file <path>] [--path <dir>] [-r]
```

**Aliase:** `squarecloud push`, `squarecloud app commit`, `squarecloud app push`

Zippt den aktuellen Ordner und sendet ihn an eine bestehende Anwendung. Die ID stammt aus dem Argument oder aus der Zeile `ID=` deiner Konfigurationsdatei. Anders als andere Befehle öffnet `commit` nie eine Auswahlliste: Fehlt beides, bricht der Befehl mit Exit-Code 1 ab.

| Flag | Beschreibung |
| - | - |
| `--file <path>` | Sendet eine einzelne Datei statt des aktuellen Ordners. Ein Zip wird in der Anwendung entpackt; jede andere Datei wird unter ihrem eigenen Namen geschrieben. Relative und absolute Pfade funktionieren. |
| `--path <dir>` | Committet in diesen Ordner der Anwendung statt in ihr Stammverzeichnis. |
| `-r`, `--restart` | Startet die Anwendung nach dem Commit neu. |

```bash theme={"system"}
squarecloud commit
# Sendet den aktuellen Ordner an die App aus der Zeile ID=.
```

```bash theme={"system"}
squarecloud commit <appID> --restart
# Sendet den aktuellen Ordner an eine bestimmte App und startet sie danach neu.
```

```bash theme={"system"}
squarecloud commit --file ./config.json --path settings
# Sendet eine einzelne Datei in den Ordner settings der App.
```

```bash Ausgabe theme={"system"}
Compressing the current directory.
Committing to your application (<appID>)...
Committed to your application.
```

Große Commits werden nicht durch ein Timeout abgebrochen. `commit` hat keine JSON-Ausgabe.

## `squarecloud zip`

```bash Verwendung theme={"system"}
squarecloud zip
```

Zippt den aktuellen Ordner genauso wie `upload` und `commit` und speichert ihn als `<folder name>.zip` in diesem Ordner, wobei eine vorhandene Datei mit diesem Namen ersetzt wird. Eine Anmeldung ist nicht nötig.

```bash Ausgabe theme={"system"}
✓ Your project was zipped to <folder name>
```

Kann das Zip nicht geschrieben werden, gibt die CLI `Couldn't zip your application.` mit dem Grund aus; lässt sich ein altes `<folder name>.zip` nicht löschen, meldet sie auch das. In beiden Fällen endet der Befehl mit Exit-Code 1.

## Siehe auch

| Befehl | API | JavaScript SDK | VS Code |
| - | - | - | - |
| `upload` | [`POST /v2/apps`](/de/api-reference/endpoint/apps/upload) | [`api.apps.create()`](/de/sdks/js/commit_and_upload) | [Neue Anwendung hochladen](/de/vscode-extension/features#neue-anwendung-hochladen) |
| `commit` | [`POST /v2/apps/{app_id}/commit`](/de/api-reference/endpoint/apps/commit) | [`api.apps.commit()`](/de/sdks/js/commit_and_upload) | [Commit](/de/vscode-extension/features#änderungen-per-commit-an-eine-bestehende-anwendung-senden) |

Um stattdessen bei jedem Push zu deployen, lies [GitHub-Deploys](/de/cli-reference/github-deploys).
