GitHub Codespaces ist eine sofortige, cloudbasierte Entwicklungsumgebung, die einen Container verwendet, um Ihnen allgemeine Sprachen, Tools und Hilfsprogramme für die Entwicklung bereitzustellen. GitHub Codespaces ist auch konfigurierbar, sodass Sie eine angepasste Entwicklungsumgebung für Ihr Projekt erstellen können. Durch die Konfiguration einer benutzerdefinierten Entwicklungsumgebung für dein Projekt kannst du über eine wiederholbare Codespacekonfiguration für alle Benutzer deines Projekts verfügen.
Erstellen Ihres Codespace
Es gibt eine Reihe von Einstiegspunkten zum Erstellen eines Codespace.
- Von einer GitHub Vorlage oder einem beliebigen Vorlagen-Repository auf GitHub, um ein neues Projekt zu starten
- Ein Branch in deinem Repository für die Arbeit an neuen Features
- Ein offener Pull Request zum Erkunden laufender Arbeiten
- Ausgehend von einem Commit in der Historie eines Repositorys, um einen Fehler zu einem bestimmten Zeitpunkt zu untersuchen.
Sie können einen Codespace auf GitHub, in Visual Studio Code oder mit der GitHub CLI erstellen.
Dein Codespace kann kurzlebig sein, wenn du etwas testen musst, oder du kannst zum selben Codespace zurückkehren, um an zeitintensiven Featureaufgaben zu arbeiten.
Weitere Informationen findest du unter Erstellen eines Codespaces für ein Repository, Erstellen eines Codespaces aus einer Vorlage und Öffnen eines vorhandenen Codespaces.
Hinweis
Du kannst pro Repository oder sogar pro Branch mehr als einen Codespace erstellen. Es gibt jedoch Grenzwerte für die Anzahl der Codespaces, die du erstellen kannst, sowie für die Anzahl der Codespaces, die du gleichzeitig ausführen kannst. Wenn du die maximale Anzahl von Codespaces erreichst und versuchst, andere zu erstellen, wird eine Meldung angezeigt, dass du einen vorhandenen Codespace entfernen musst, bevor du einen neuen erstellen kannst.
Der Codespace-Erstellungsprozess
Wenn du einen Codespace erstellst, werden verschiedene Schritte im Hintergrund ausgeführt, bevor der Codespace zur Verfügung steht.
Schritt 1: VM und Speicher werden deinem Codespace zugewiesen
Wenn Sie einen Codespace erstellen, wird ein virtueller Computer (VM) mit dem stabilen oder Öffentliche Vorschau release des VM-Hostimages erstellt. Weitere Informationen finden Sie unter Auswahl eines stabilen Hostimages oder eines Beta-Hostimages. Das Hostimage definiert die Version von Linux, die für die VM verwendet wird. Die virtuelle Maschine ist sowohl speziell als auch privat für Sie. Wenn du über eine dedizierte VM verfügst, wird sichergestellt, dass dir die gesamten Rechenressourcen dieser Maschine zur Verfügung stehen. Bei Bedarf hast du auch vollständigen Root-Zugriff auf deinen Container.
Ein flacher Klon Ihres Repositorys wird anschließend erstellt oder ein flacher Klon des Vorlagenrepositorys, wenn Sie einen Codespace mithilfe einer Vorlage erstellen. Dies wird in das /workspaces-Verzeichnis der VM geklont und später in den Entwicklungscontainer eingebunden. Weitere Informationen findest du weiter unten unter Informationen zur Verzeichnisstruktur von Codespaces.
Schritt 2: Entwicklungscontainer wird erstellt
GitHub Codespaces verwendet einen Docker-Container als Entwicklungsumgebung. Dieser Container wird basierend auf Konfigurationen erstellt, die du in einer Datei vom Typ devcontainer.json und optional in einem Dockerfile definieren kannst. Wenn Sie einen Codespace aus GitHubder leeren Vorlage oder aus einem Repository ohne devcontainer.json Datei erstellen, GitHub Codespaces wird ein Standardimage verwendet, das viele Sprachen und Laufzeiten zur Verfügung hat. Weitere Informationen finden Sie unter Einführung in Dev-Container. Ausführliche Informationen zum Inhalt des Standardimage für Entwicklungscontainer findest du im Repository devcontainers/images.
Hinweis
Wenn du Git-Hooks in deinem Codespace verwenden und alles im Git-Vorlagenverzeichnis auf deinen Codespace anwenden möchtest, musst du in Schritt 4 nach der Erstellung des Containers Hooks einrichten.
Da dein Repository vor der Erstellung des Containers auf der Host-VM geklont wird, gelten alle Elemente im Git-Vorlagenverzeichnis nicht in deinem Codespace, es sei denn, du richtest die devcontainer.json-Konfigurationsdatei mit dem postCreateCommand in Schritt 4 ein. Weitere Informationen findest du unter Schritt 4: Einrichtung nach der Erstellung.
Schritt 3: Herstellen einer Verbindung mit dem Codespace
Wenn dein Container erstellt wurde und alle anderen Initialisierungen ausgeführt wurden, wirst du mit deinem Codespace verbunden. Sie können sich damit verbinden, indem Sie Folgendes verwenden:
- Ihr Webbrowser
- Visual Studio Code
- GitHub CLI
Schritt 4: Einrichtung nach der Erstellung
Sobald du mit deinem Codespace verbunden bist, setzt das automatisierte Setup möglicherweise die Erstellung basierend auf der Konfiguration fort, die in der Datei devcontainer.json angegeben ist. Sie können sehen, dass postCreateCommand und postAttachCommand ausgeführt werden.
Wenn du Git-Hooks in deinem Codespace verwenden möchtest, richte Hooks mithilfe der devcontainer.json-Lebenszyklusskripts ein (z. B. postCreateCommand). Informationen zu Lebenszyklusskripts findest du in der Spezifikation von Entwicklungscontainern auf der Website zu Entwicklungscontainern.
Wenn Sie ein öffentliches Dotfiles-Repository für GitHub Codespaces haben, können Sie es zur Verwendung mit neuen Codespaces aktivieren. Wenn es aktiviert ist, werden deine Dotfiles in den Container geklont, und das Installationsskript wird aufgerufen. Weitere Informationen finden Sie unter Personalisieren GitHub Codespaces für Ihr Konto.
Wenn du den Codespace auf der Grundlage eines Repositorys erstellt hast, wird letztlich der gesamte Verlauf des Repositorys mit einem vollständigen Klon kopiert. Wenn du den Codespace mithilfe einer Vorlage erstellt hast, bleibt nicht der gesamte Verlauf des Vorlagenrepositorys erhalten. Stattdessen beginnst du mit einem anfänglichen Commit für die Inhalte des Vorlagenrepositorys (es sei denn, du verwendest die leere Vorlage).
Während der Einrichtung nach der Erstellung kannst du weiterhin das integrierte Terminal verwenden und deine Dateien bearbeiten, aber achte darauf, Racebedingungen zwischen deiner Arbeit und den ausgeführten Befehlen zu vermeiden.
Codespaces Lebenszyklus
Speichern von Dateien im Codespace
Speichere Änderungen an Dateien auf normale Weise – je nachdem, welchen Editor du verwendest.
Wenn Sie an Codespaces arbeiten, Visual Studio Codekönnen Sie die automatische Speicherung aktivieren, um sicherzustellen, dass Ihre Änderungen immer gespeichert werden.
Schließen oder Stoppen Ihres Codespace
Ihr Codespace wird weiterhin ausgeführt, während Sie es verwenden, bis zu einer maximalen Lebensdauer von 12 Stunden, wird aber nach einem Bestimmten Zeitraum der Inaktivität timeout. Dateiänderungen über den Editor und Terminalausgaben zählen als Aktivität, sodass für den Codespace kein Timeout auftritt, wenn die Terminalausgabe fortgesetzt wird. Der Timeoutzeitraum bei Inaktivität beträgt standardmäßig 30 Minuten. Du kannst deine eigene Timeouteinstellung für von dir erstellte Codespaces definieren. Diese kann jedoch durch eine Timeoutrichtlinie der Organisation außer Kraft gesetzt werden. Weitere Informationen finden Sie unter Festlegen des Timeoutzeitraums für GitHub Codespaces. Weitere Informationen zur maximalen Lebensdauer finden Sie unter Grundlegendes zum Codespacelebenszyklus.
Wenn ein Codespace nicht mehr ausgeführt wird, aber Sie können ihn über die Browserregisterkarte (wenn Sie den Codespace im Browser verwenden), von innerhalb VS Codeoder aus der Liste der Codespaces unter https://github.com/codespaces" neu starten.
Zum Beenden deines Codespace stehen folgende Möglichkeiten zur Verfügung:
- Im Browser: Klicke unter https://github.com/codespaces in der Liste mit den Codespaces rechts neben dem Codespace, den du beenden möchtest, auf die Auslassungspunkte ( ... ), und klicke anschließend auf Codespace beenden.
- Geben VS CodeSie in : öffnen Sie die Visual Studio Code Command Palette - z. B. durch Drücken von STRG+UMSCHALT+P (Windows/Linux) oder UMSCHALTBEFEHL++P (Mac)
Codespaces: stopdie EINGABETASTE. Weitere Informationen finden Sie unter Verwenden der Visual Studio Code Befehlspalette in GitHub Codespaces. - Verwenden Sie in einem Terminalfenster den GitHub CLI Befehl
gh codespace stop. Weitere Informationen finden Sie unter Verwenden von GitHub Codespaces mit GitHub CLI.
Wenn du den Codespace schließt, ohne den Beendigungsbefehl auszuführen (beispielsweise durch Schließen des Browsertabs), oder den Codespace ohne Interaktion verlässt, werden der Codespace und seine laufenden Prozesse für die Dauer des Timeoutzeitraums bei Inaktivität fortgesetzt.
Wenn du den Codespace schließt oder beendest, werden alle nicht übernommenen Änderungen beibehalten, bis du noch einmal eine Verbindung mit dem Codespace herstellst.
Ausführen deiner Anwendung
Portweiterleitung bietet Zugriff auf TCP-Ports, die innerhalb deines Codespace ausgeführt werden. Wenn du beispielsweise eine Webanwendung auf Port 4000 in deinem Codespace ausführst, kannst du diesen Port automatisch weiterleiten, um die Anwendung über deinen Browser zugänglich zu machen.
Die Portweiterleitung bestimmt, auf welche Ports du über den Remotecomputer zugreifen kannst. Auch wenn du keinen Port weiterleitest, ist dieser Port weiterhin für andere Prozesse zugänglich, die innerhalb des Codespace selbst ausgeführt werden.

Wenn eine Anwendung, die in der Konsole GitHub Codespaces ausgeführt wird, einen Port an die Konsole ausgibt, GitHub Codespaces erkennt das Localhost-URL-Muster und leitet den Port automatisch weiter. Sie können auf die URL im Terminal oder auf den Link in der Popupbenachrichtigung klicken, die in der unteren rechten Ecke von VS Code, um den Port in einem Browser zu öffnen. Leitet den Port standardmäßig GitHub Codespaces mithilfe von HTTP weiter. Weitere Informationen zur Portweiterleitung findest du unter Weiterleitung von Ports in Ihrem Codespace.
Während Ports automatisch weitergeleitet werden können, sind sie für das Internet nicht öffentlich zugänglich. Standardmäßig sind alle Ports privat, aber du kannst einen Port manuell für deine Organisation oder die Öffentlichkeit verfügbar machen und dann den Zugriff über eine URL freigeben. Weitere Informationen finden Sie unter Weiterleitung von Ports in Ihrem Codespace.
Die Ausführung deiner Anwendung, wenn du zum ersten Mal in deinen Codespace gelangst, kann zu einer schnellen inneren Entwicklungsschleife führen. Während der Bearbeitung werden deine Änderungen automatisch gespeichert und sind auf deinem weitergeleiteten Port verfügbar. Zum Anzeigen von Änderungen wechselst du zurück zur ausgeführten Anwendungsregisterkarte in deinem Browser und aktualisierst sie.
Commit und Push deiner Änderungen
Git ist standardmäßig in deinem Codespace installiert, sodass du dich auf deinen vorhandenen Git-Workflow verlassen kannst. Sie können in Ihrem Codespace mit Git entweder über das Terminal oder mithilfe der Features der Quellcodeverwaltung von VS Code arbeiten.
Bei Verwendung eines bereits vorhandenen Repositorys kannst du einen Codespace auf der Grundlage eines beliebigen Branchs, Commits oder Pull Requests in dem Repository erstellen. Alternativ kannst du innerhalb deines aktiven Codespace zu einem neuen oder bereits vorhandenen Branch wechseln. Da GitHub Codespaces für Kurzlebigkeit ausgelegt ist, können Sie es als isolierte Umgebung verwenden, um zu experimentieren, den Pull Request eines Teammitglieds zu überprüfen oder Zusammenführungskonflikte zu beheben.
Wenn du nur Lesezugriff auf ein Repository hast, kannst du einen Codespace für das Repository erstellen, solange du es forken kannst. Wenn Sie im Codespace einen Commit erstellen oder einen neuen Branch pushen, erstellt GitHub Codespaces entweder automatisch einen Fork des Repositorys für Sie oder verknüpft den Codespace mit einem vorhandenen Fork, falls Sie bereits einen für das Upstream-Repository haben.
Wenn du in einem Codespace arbeitest, der mithilfe einer Vorlage erstellt wurde, ist Git standardmäßig installiert. Du musst deinen Codespace jedoch in einem Remoterepository veröffentlichen, um deine Arbeit zu speichern und mit anderen teilen zu können. Wenn Sie mit GitHubder leeren Vorlage beginnen, müssen Sie zuerst Ihren Arbeitsbereich als Git-Repository initialisieren (z. B. durch Eingabe git init), um mit der Quellcodeverwaltung im Codespace zu beginnen.
Weitere Informationen finden Sie unter Verwenden der Quellcodeverwaltung in deinem Codespace.
Hinweis
Commits aus Ihrem Codebereich werden dem unter https://github.com/settings/profile konfigurierten Namen und der öffentlichen E-Mail-Adresse zugeordnet. Ein auf das Repository beschränktes Token, das in der Umgebung als GITHUB_TOKEN enthalten ist; Ihre GitHub-Anmeldeinformationen werden zur Authentifizierung verwendet.
Personalisieren deines Codespace mit Erweiterungen
Sie können Erweiterungen in einem Codespace hinzufügen, um Ihre Benutzeroberfläche zu personalisieren.VS Code
VS Code Erweiterungen
Wenn Sie in der VS Code Desktopanwendung oder im Webclient an Ihren Codespaces arbeiten, können Sie alle Erweiterungen, die Sie benötigen, über Visual Studio Code Marketplace hinzufügen. Informationen zur Ausführung GitHub Codespacesvon Erweiterungen finden Sie unter Unterstützen der Remoteentwicklung und GitHub Codespaces in der VS Code Dokumentation.
Wenn Sie bereits verwenden VS Code, können Sie die Einstellungssynchronisierung verwenden, um Erweiterungen, Einstellungen, Designs und Tastenkombinationen zwischen Ihrer lokalen Instanz und allen von Ihnen erstellten Codespaces automatisch zu synchronisieren.
Informationen zur Verzeichnisstruktur von Codespaces
Wenn du einen Codespace erstellst, wird dein Repository in das /workspaces-Verzeichnis deines Codespace geklont. Es handelt sich um ein persistentes Verzeichnis, das in den Container eingebunden wird. Alle Änderungen, die du in diesem Verzeichnis vornimmst, einschließlich dem Bearbeiten, Hinzufügen oder Löschen von Dateien, werden beibehalten, wenn du den Codespace beendest und startest oder wenn du den Container im Codespace neu erstellst.
Außerhalb des /workspaces-Verzeichnisses hat Ihr Codespace eine Linux-Verzeichnisstruktur, die abhängig vom Dev-Containerimage variiert, das zum Erstellen Ihres Codespace verwendet wird. Sie können Dateien hinzufügen oder Änderungen an Dateien außerhalb des Verzeichnisses /workspaces vornehmen. Sie können beispielsweise neue Programme installieren oder die Shell-Konfiguration in einer Datei einrichten wie z. B. ~/.bashrc. Als Nicht-Root-Benutzer*in hast du möglicherweise nicht automatisch Schreibzugriff auf bestimmte Verzeichnisse, aber die meisten Images lassen den Root-Zugriff auf diese Verzeichnisse mit dem sudo-Befehl zu.
Außerhalb von /workspaces sind die Verzeichnisse in einem Codespace mit Ausnahme des /tmp-Verzeichnisses an den Lebenszyklus des Containers gebunden. Das bedeutet, dass alle Änderungen, die Sie vornehmen, beibehalten werden, wenn Sie den Codespace beenden und starten, aber nicht, wenn Sie den Container neu erstellen. Weitere Informationen zum /tmp Verzeichnis finden Sie unter Beibehalten von Umgebungsvariablen und temporären Dateien.
Durch das Löschen der Verzeichnisse außerhalb von /workspaces stellst du sicher, dass der neu erstellte Container denselben Zustand wie in einem neu erstellten Codespace aufweist. Wenn du einen Container neu erstellst, um Konfigurationsänderungen auf den Codespace anzuwenden, in dem du arbeitest, kannst du sicher sein, dass alle Konfigurationsänderungen, die du vorgenommen hast, für Benutzer*innen, die neue Codespaces mit derselben Konfiguration erstellen, gleich funktionieren. Weitere Informationen finden Sie unter Einführung in Dev-Container.
Wenn du Änderungen an deinem Codespace vornehmen möchtest, die bei Neuerstellungen und in verschiedenen Codespaces robuster sind, hast du dazu mehrere Möglichkeiten.
- Zum Installieren von Programmen und Tools in allen Codespaces, die aus einem Repository erstellt werden, kannst du in der Konfiguration deines Entwicklungscontainers Lebenszyklusbefehle verwenden (z. B.
postCreateCommand), um benutzerdefinierte Installationsbefehle auszuführen, oder du kannst aus vordefinierten Installationsbefehlen auswählen, die als „Features“ bezeichnet werden. Weitere Informationen findest du in der Entwicklungscontainerspezifikation auf der Website für Entwicklungscontainer und unter Hinzufügen von Features zu einer Datei vom Typ „devcontainer.json“. - Um Tools zu installieren oder Ihr Setup in jedem von Ihnen erstellten Codespace anzupassen, z. B. das Konfigurieren Ihres
bashProfils, können Sie eine Verknüpfung mit einem Dotfiles-Repository herstellen GitHub Codespaces . Das Dotfiles-Repository wird auch in das persistente Verzeichnis/workspacesgeklont. Weitere Informationen finden Sie unter Personalisieren GitHub Codespaces für Ihr Konto. - Wenn du bestimmte Dateien bei einer Neuerstellung beibehalten möchtest, kannst du die Datei
devcontainer.jsonverwenden, um einen Symlink zwischen den Dateien und einem persistenten Verzeichnis in/workspaceszu erstellen. Weitere Informationen finden Sie unter Neuerstellen des Containers in einem Codespace.