# Codespace läuft im Wiederherstellungsmodus

Quelle: https://inf.zone/extras/setup/codespace-recovery-mode/

> [!NOTE]
> Diese Anleitung geht davon aus, dass Sie [GitHub Codespaces](https://inf.zone/extras/setup/codespace-cloud/) unter [cs50.dev](https://cs50.dev) verwenden.
> 
> **In einem [Offline-Dev-Container](https://inf.zone/extras/setup/devcontainer-local/) kann es zu diesem Problem nicht kommen!**

Gelegentlich kann es vorkommen, dass Ihr Codespace in einen „Wiederherstellungsmodus“ (engl. „recovery mode“) gerät, weil ein externer Dienst ausgefallen ist, ein Fehler bei der Erstellung des Containers aufgetreten ist oder die Datei `.devcontainer.json` fehlerhaft geändert wurde. Die meisten CS50-Befehle, wie `check50` und `style50`, funktionieren dann nicht und Sie können Ihren Code nicht mit CS50-Bibliotheken kompilieren.

Im Wiederherstellungsmodus würde Ihr Terminal wie folgt aussehen:

```
@githubBenutzername -> /workspaces/githubId (main) $
```

Normalerweise sollte Ihr Terminal nur ein einzelnes Dollarzeichen enthalten:

```
$
```

## Beheben des Problems

1. Führen Sie den folgenden Befehl in einem _neuen Terminal_ aus.
    ```
    curl -fsSL https://inf.zone/devcontainer.json -o /workspaces/$RepositoryName/.devcontainer.json
    ```
2. Stellen Sie sicher, dass die Erweiterung „GitHub Codespaces“ installiert ist. Dies können Sie einfach durch Eingabe des folgenden Befehls sicherstellen.
    ```
    code --install-extension GitHub.codespaces
    ```
3. Nach der Installation der Erweiterung „GitHub Codespaces“ drücken Sie <kbd>Command</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> (unter macOS) oder <kbd>Strg</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> (unter Windows), suchen nach _Codespaces: Rebuild Container_ und drücken dann die Eingabetaste auf der Tastatur. Nun öffnet sich ein weiteres Fenster, hier wählen Sie die Option „Full Rebuild“ (**nicht „Rebuild“**), um Ihren Codespace neu zu erstellen. Ihre Dateien gehen hierbei nicht verloren!

4. Ihr Codespace wird gestartet, sobald der Wiederherstellungsprozess abgeschlossen ist. Dabei richtet er sich wieder für den Kurs ein, samt `inf`. Fehlt `inf` danach doch, steht unter [Abgeben mit `inf`](https://inf.zone/faq/uebung-solutions/#inf-einrichtung), was zu tun ist.
