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

# シェルフ

> ワークスペースの変更を一時的に保存し、シェルフを管理する

Diversion では、現在の作業をシェルフに保存し、元のブランチに戻ったときに再適用することができます。
これは Git の「stash」機構と同様の仕組みです。

## シェルフを使うタイミング

* **コンテキストの切り替え:** 別のブランチに切り替える前に、作業中の変更を保存する
* **試行錯誤:** コミットせずに変更を試し、うまくいかなければ簡単に元に戻す
* **複数のマシンでの作業:** あるコンピューターで変更をシェルフに保存し、別のコンピューターで適用する。シェルフはリポジトリごとにクラウドに保存されるため、同じリポジトリの任意のワークスペースから利用できます。

## シェルフの作成

ワークスペースのシェルフボタンを使ってシェルフを作成します。

1. ワークスペースでシェルフに保存したいファイルを選択します
2. **Shelve...** をクリックして命名ダイアログを開きます:

<img src="https://mintcdn.com/diversion-2/_3tfLC_xjbiulVkJ/images/shelves/shelf_menu.png?fit=max&auto=format&n=_3tfLC_xjbiulVkJ&q=85&s=f142fcb23547fe6be24f46e21c3e3fb7" alt="shelf button" style={{width: '300px', height: '70px', borderRadius: '1.0rem', border: '.2rem solid #555', boxShadow: '0 0 1rem #888' }} width="637" height="136" data-path="images/shelves/shelf_menu.png" />

3. シェルフに[名前を付けます](#シェルフの命名)
4. **Create shelf** をクリックします

### 自動シェルフ

コミットされていない変更がある状態でブランチを切り替えると、それらをどうするか尋ねるポップアップメニューが表示されます。

<img src="https://mintcdn.com/diversion-2/_3tfLC_xjbiulVkJ/images/shelves/uncommitted_changes_branch_switch.png?fit=max&auto=format&n=_3tfLC_xjbiulVkJ&q=85&s=378faaccf3538f8055d457f8d30a4651" alt="uncommitted changes branch switch menu" style={{width: '260px', height: '200px', borderRadius: '1.0rem', border: '.2rem solid #555', boxShadow: '0 0 1rem #888' }} width="769" height="586" data-path="images/shelves/uncommitted_changes_branch_switch.png" />

**Save changes for later use** を選択すると、自動シェルフが作成されます。

### シェルフの命名

シェルフを作成する際、次のことができます:

* カスタム名を入力する(最大 60 文字)
* **Generate name** <img src="https://mintcdn.com/diversion-2/_3tfLC_xjbiulVkJ/images/shelves/generate_name_button.png?fit=max&auto=format&n=_3tfLC_xjbiulVkJ&q=85&s=2a34e5cbb196a7301183f9c492041169" alt="generate name button" style={{display: 'inline', height: '24px', verticalAlign: 'middle', margin: '0 4px'}} width="25" height="33" data-path="images/shelves/generate_name_button.png" /> をクリックして `my_branch (2025-01-13 13:00:00)` のような名前を生成する

<Note>シェルフ名はリポジトリ内で一意である必要があります。</Note>

## シェルフの管理

ブランチセレクタを開き、**Shelves** タブに切り替えるとシェルフを表示・管理できます。

<img src="https://mintcdn.com/diversion-2/byT8FECKa2zLvaOH/images/shelves/shelves_list.png?fit=max&auto=format&n=byT8FECKa2zLvaOH&q=85&s=07ba2933ecf68955fc5cb4c52da0e7b1" alt="shelves list" style={{width: '320px', height: '132px', borderRadius: '1.0rem', border: '.2rem solid #555', boxShadow: '0 0 1rem #888' }} width="870" height="530" data-path="images/shelves/shelves_list.png" />

### プレビュー

シェルフをクリックすると、適用前に内容をプレビューできます。

### 適用

**Apply** をクリックすると、シェルフに保存された変更がワークスペースに復元されます。

<Warning>シェルフの変更が現在のワークスペースと競合する場合は、続行する前に競合を解決する必要があります。</Warning>

### 名前の変更

**Rename** をクリックすると、シェルフ名を変更できます。

### 削除

**Delete** をクリックすると、シェルフを完全に削除します。この操作は取り消せません。

***

CLI での使い方については、[shelf](../cmd-ref/shelf) コマンドリファレンスを参照してください。
