Skip to main content

codespace のライフサイクル

GitHub Codespaces 環境で開発し、codespace のライフサイクル全体にわたってデータを維持できます。

codespace のライフサイクルについて

codespace のライフサイクルは、codespace を作成するときに開始され、削除すると終了します。 実行中のプロセスに影響を与えることなく、アクティブな codespace を切断して再接続できます。 プロジェクトに加えた変更を失うことなく、codespace を停止して再起動できます。

codespace を作成する

プロジェクトで作業する場合は、新しい codespace を作成するか、既存の codespace を開くかを選択できます。 GitHub Codespaces で開発するたびに、リポジトリのブランチから新しい codespace を作成することも、機能の実行時間の長い codespace を保持することもできます。 新しいプロジェクトを始める場合は、テンプレートから codespace を作成して、後で GitHub でリポジトリを発行できます。 詳細については、「リポジトリの codespace を作成する」と「テンプレートから codespace を作成する」を参照してください。

作成できる codespace の数と、同時に実行できる codespace の数には制限があります。 これらの制限は、いくつかの要因によって異なります。 codespace の最大数に達してからさらに作成しようとすると、新しい codespace を作成する前に既存のものを削除する必要があることを示すメッセージが表示されます。 同様に、アクティブな codespace の最大数に達してからさらに起動しようとすると、アクティブな codespace のいずれかを停止するように求められます。

プロジェクトで作業するたびに新しい codespace を作成する場合は、新しいコミットがすべて GitHub で行われるように、変更を定期的にプッシュする必要があります。 プロジェクトで実行時間の長い codespace を使用する場合は、環境で一番新しいコミットが行われるように、codespace で作業を開始するたびにリポジトリの既定のブランチからプルする必要があります。 このワークフローは、ローカル コンピューターでプロジェクトを操作していた場合とよく似ています。

コードスペースの作成を高速化するために、リポジトリ管理者はリポジトリの GitHub Codespaces プレビルドを有効にすることができます。 詳しくは、「GitHub Codespaces プレビルドについて」をご覧ください。

codespace で変更を保存する

Web 経由で codespace に接続すると、Web エディターに対して自動保存が自動的に有効になり、遅延後に変更を保存するように構成されます。 デスクトップで実行されている Visual Studio Code を介して codespace に接続する場合は、自動保存を有効にする必要があります。 詳細については、Visual Studio Code のドキュメントの「保存/自動保存」を参照してください。

作業はクラウド内の仮想マシンに保存されます。 codespace を閉じて停止し、後で保存した作業に戻ることができます。 保存されていない変更がある場合、エディターは終了する前に保存するように求められます。 ただし、codespace が削除されると、作業も削除されます。 作業を永続化するには、変更をコミットしてリモート リポジトリにプッシュするか、テンプレートから codespace を作成した場合は、新しいリモート リポジトリに作業を発行する必要があります。 詳細については、「Codespace でソース コントロールを使用する」を参照してください

GitHub Codespaces のタイムアウト

対話なしで codespace を実行したままにした場合、または明示的に停止せずに codespace を終了した場合、codespace は一定期間非アクティブになった後にタイムアウトし、実行を停止します。 既定では、非アクティブ状態になって 30 分が経過した後に、codespace がタイムアウトしますが、作成する新しい codespace のタイムアウト期間をカスタマイズできます。 codespace の既定のタイムアウト期間の設定について詳しくは、「GitHub Codespaces のタイムアウト期間を設定する」をご覧ください。 codespace の停止の詳細については、「codespace を停止する」参照してください。

codespace がタイムアウトすると、変更が最後に保存された時点からデータが保持されます。 詳細については、「codespace の変更を保存する」を参照してください。

Codespace を再構築する

codespace をリビルドして、開発コンテナーの構成に変更を実装できます。 ほとんどの場合、codespace を再構築する代わりに、新しい codespace を作成できます。 既定では、codespace をリビルドすると、GitHub Codespaces によりキャッシュからイメージが再利用され、再構築プロセスが高速化されます。 または、完全なリビルドを実行できます。これにより、キャッシュがクリアされ、新しいイメージを使用してコンテナーが再構築されます。

詳細については、「開発コンテナーの概要」および「コンテナーの完全なリビルドの実行」を参照してください。

codespace を停止する

codespace はいつでも停止できます。 codespace を停止すると、実行中のすべてのプロセスが停止され、ターミナルの履歴が消去されます。 次に codespace を起動するときに、codespace に保存した変更は引き続き使用できます。 codespace を明示的に停止しない場合、非アクティブからタイムアウトするまで実行され続けます。 詳しくは、「codespace のライフサイクル」を参照してください。

CPU 料金は、実行中の codespace に対してのみ発生します。 停止した codespace には、ストレージ コストのみが発生します。

codespace を停止し、再起動したときに、変更を適用したいと思うかもしれません。 たとえば、codespace に使用するマシンの種類を変更した場合、変更を有効にするには、その codespace を停止して再起動する必要があります。 また、エラーや予期しない問題が発生した場合に、codespace を停止し、再起動または削除することもできます。 詳細については、「codespace の停止と開始」を参照してください。

codespace を削除する

特定のタスクの codespace を作成し、変更をリモート ブランチにプッシュした後で、その codespace を安全に削除できます。

プッシュしていない Git コミットと一緒に codespace を削除しようとすると、リモート ブランチにプッシュされていない変更があることがエディターから通知されます。 必要な変更をプッシュしてから codespace を削除することも、codespace とコミットしていない変更をそのまま削除することもできます。 新しい codespace を作成せずに、コードを新しいブランチにエクスポートすることもできます。 詳細については、「ブランチへの変更のエクスポート」を参照してください。

指定した期間停止され、非アクティブなままになっている Codespace は自動的に削除されます。 既定では、非アクティブな codespace は 30 日後に削除されますが、codespace の保持期間はカスタマイズできます。 詳しい情報については、「codespace の自動削除を構成する」をご覧ください。

codespace を作成すると、アクティブか停止かに関係なく、削除されるまでストレージ料金が発生し続けます。 詳しくは、「GitHub Codespaces の支払いについて」をご覧ください。 codespace を削除しても、GitHub Codespaces の現在の課金対象金額は減少しません。これは、毎月の請求期間の間に累積されます。 詳細については、「GitHub Codespaces の使用状況を表示する」を参照してください。

codespace の削除について詳しくは、「codespace を削除する」を参照してください。

GitHub Codespaces の使用中に接続が失われる

GitHub Codespaces はクラウドベースの開発環境であり、インターネット接続が必要です。 codespace で作業しているときにインターネットへの接続が失われると、その codespace にアクセスできなくなります。 ただし、コミットされていない変更はすべて保存されます。 インターネット接続に再度アクセスできるようになると、切断されたときとまったく同じ状態で codespace に接続できます。 インターネット接続が不安定な場合は、頻繁に変更をコミットしてプッシュする必要があります。

オフラインで作業することが多いことがわかっている場合は、VS Code の "Dev Containers" 拡張機能devcontainer.json ファイルを使用して、リポジトリのローカル開発コンテナーをビルドしてアタッチできます。 詳細については、Visual Studio Code ドキュメントの「コンテナー内で開発する」を参照してください。