# Use environments

After [Setting up environments for a Space](/content/c/docs/environments/index.html), you can determine which models and content entries are synced to your main environment.

## Prerequisites

To get the most out of this tutorial, you should have already have the following:

- [Builder Admin permissions](/content/c/docs/guides/roles-and-permissions#admin/index.html) in a space with an Enterprise plan
- More than one environment

## Sync environments with Live Sync

With Live Sync, models and content are by default linked across environments. Linked models and content sync in real time so if you make model updates in the parent environment, the other environments reflect those changes.

However, you can turn off Live Sync for a model or content and work on that model or content independent of your main environment. Then you can [push](/content/c/docs/using-environments#push/index.html) your changes to the main environment when you're ready.

Make sure to manually migrate [webhooks](/content/c/docs/webhooks/index.html) so that you can ensure that the environment-specific URLs are correct.

To get changes from a child environment to the main environment, see [Pushing changes from a child environment](/content/c/docs/using-environments#pushing/index.html).

The following diagram shows that Live Sync only goes one way, from the main environment to child environments. When Live Sync is on, child environments reflect changes in the main environment.

### Turn off Live Sync for a model

1. Navigate to an environment, by either clicking to dropdown at the top of your Space's page or by going to [Settings](/content/c/docs/settings#space-settings/index.html) and clicking the **Enter** link next to your environment of choice.
2. In the environment, go to [Models](/content/models/index.html).
3. Click on the Model you'd like to unlink.
4. On the upper right of the Model, click the down arrow next to the **Linked** indicator and select **Turn Off Live Sync**.
5. In the confirmation dialogue that opens, click the **Turn Off Live Sync** button. The **Linked** indicator changes to **Unlinked**.

### Turn on Live Sync for models

1. Navigate to an environment, by either clicking to dropdown at the top of your Space's page or by going to [Settings](/content/c/docs/settings#space-settings/index.html) and clicking the **Enter** link next to your environment of choice.
2. In the environment, go to [Models](/content/models/index.html).
3. Click on the Model you'd like to unlink.
4. On the upper right of the Model, click the down arrow next to the **Unlinked** indicator and select **Turn On Live Sync**.
5. In the confirmation dialogue that opens, click the **Turn Off Live Sync** button. The **Unlinked** indicator changes to **Linked**.

### Turn off Live Sync for content

You can turn off Live Sync to work on content and models independent of your main environment. Then you can [push](/content/c/docs/using-environments#pushing/index.html) your changes to the main environment when you're ready.

To turn off Live Sync for content, do the following:

1. Navigate to an environment, by either clicking to dropdown at the top of your Space's page or by going to [Settings](/content/c/docs/settings#space-settings/index.html) and clicking the **Enter** link next to your environment of choice.
2. In the environment, go to [Content](/content/content/index.html).
3. Click on the content entry you'd like to unlink.
4. Within the menu on the left, click the down arrow next to the **Linked** indicator and select **Turn Off Live Sync**.
5. In the confirmation dialogue that opens, click the **Turn Off Live Sync** button. The **Linked** indicator changes to **Unlinked**.

### Turn on Live Sync for content

1. Navigate to an environment, by either clicking to dropdown at the top of your Space's page or by going to [Settings](/content/c/docs/settings#space-settings/index.html) and clicking the **Enter** link next to your environment of choice.
2. In the environment, go to [Content](/content/content/index.html).
3. Click on the content entry you'd like to link.
4. Within the menu on the left, click the down arrow next to the **Unlinked** indicator and select **Turn on Live Sync**.

When you turn on Live Sync, all unpushed changes in the child environment are overwritten. If you want to keep your changes in the child environment, you must [push to your main environment](/content/c/docs/using-environments#push-content/index.html) first.

### Turn off Live Sync for an environment

In addition to turning off Live Sync for content and models, you have the option of turning Live Sync off for a whole environment.

Note that when Live Sync for an environment is turned off:

- Automatic, live synchronization stops for new content. Existing content continues to sync.
- Changes in the main Space no longer sync automatically to the child environment where Live Sync has been disabled.

To turn off Live Sync for an environment:

1. Enter the environment where you want to turn off Live Sync.
2. Go to [Settings](/content/c/docs/settings#space-settings/index.html).
3. Go to **Advanced Settings**, then **Advanced**.
4. Click the toggle for **Enable Environment Live Sync**. This turns off live sync between main and the environment that you are in.

## Push changes from a child environment

Pushing, which is a manual process, gives you full control over when and how your changes are propagated so that you can carefully review updates before pushing them to the production environment.

Pushing is a manual process of copying updates in the following ways:

- from a child environment to the main environment
- from a child environment to another child environment

If you push unlinked content to the main environment, Builder links the two environments. If however, you push from one unlinked sibling environment to another, the environments remain unlinked.

If you create or edit content or models in a child environment and want those changes in main, you must push in order of dependency:

1. Push all changed models.
2. Push dependent content, such as Symbols.
3. Push the content.

### Push model changes

When you have an unlinked model with changes that are ready for the main environment, you can push them from a non-prod environment to the main or a sibling environment.

Note that if more than one person is working on a model and someone pushes the changes in that content entry, **all changes by all users are simultaneously pushed**.

If you push unlinked models to the main environment, Builder links the two environments. If however, you push from one unlinked sibling environment to another, the environments remain unlinked.

1. Navigate to an environment, by either clicking to dropdown at the top of your Space's page or by going to [Settings](/content/c/docs/settings#space-settings/index.html) and clicking the **Enter** link next to your environment of choice.
2. In the environment, go to [Models](/content/models/index.html).
3. Click on the Model you'd like to edit.
4. Edit the model.
5. On the upper right of the Model, click the down arrow next to the **Unlinked** indicator and select **Push to**`environment`.
6. In the confirmation dialogue that opens, click the **Yes, Push Now** button. Notice that the **Unlinked** indicator changes to **Linked**.

### Push content changes

When you're ready to push content changes, be aware that if more than one person is working on a content entry and someone pushes the changes in that content entry, **all changes by all users are simultaneously pushed**.

1. Navigate to an environment, by either clicking to dropdown at the top of your Space's page or by going to [Settings](/content/c/docs/settings#space-settings/index.html) and clicking the **Enter** link next to your environment of choice.
2. In the environment, go to [Content](/content/content/index.html).
3. Click on the content entry you'd like to push.
4. In the Visual Editor, at the top, click the down arrow next to the **Unlinked** indicator and select **Push to Main**.
5. In the confirmation dialogue that opens, click the **Yes, Push Now** button. Notice that the **Unlinked** indicator changes to **Linked**.

If you've created a model in a child environment rather than your main environment, be sure to push the model first, then the content.

## Resync an environment

Resync resets an environment by copying all data from the parent Space to create a replica into the child environment, removing any changes made in the child environment before the process.

During the resync, [Public API keys](/content/c/docs/using-your-api-key#finding-your-public-api-key/index.html), [global webhooks](/content/c/docs/global-webhooks#creating-a-global-webhook/index.html), and Space URLs remain unchanged, so you don't have to re-integrate with your app for the new environment.

Customize the resync process by selecting specific items from the parent Space to copy into the child environment while retaining environment-specific data, such as Custom Targeting and Users, in both environments.

To resync an environment:

1. Go to to [Settings](/content/c/docs/settings#space-settings/index.html).
2. Locate the environment you wish to sync.
3. Click the three dots next to the environment name.
4. Select **Resync** from the menu.
5. In the panel that appears, select or deselect the items you want to sync.
6. Click **Resync** and confirm your choices.

When performing a resync, you can selectively include:

- **Content:** Folders, Views, All content entries and models
- **Settings:** Users, Custom Breakpoints, Custom Roles, Locale and Custom Targeting, Plugins

Settings that sync by default:

- **Advanced Settings**
- **All Fonts**
- **Code Generation Instructions**
- **Design Tokens**

Example use case:

- Sync all content entries and models from the parent environment while preserving users, roles, and environment-specific data in the child environment.
