# Jjewel Concepts

To use Jjewel you must be familiar with the following terms:

- Repositories
- Changes
- Remotes

## Repositories

Jjewel is a GUI client for the Jujutsu version control system. To use Jjewel you must have a Jujutsu repository for your client.

When you launch Jjewel for the first time, there are no windows open. Jjewel provides the following options to open a repository window:

- Open a Jujutsu repository
- Create a new Jujutsu repository
- Clone an existing git repository

If you have already created a Jujutsu repository for your project, you can open it by pressing Cmd-O. The Opening a Repository page has more detailed instructions on opening a repository.

If you have not created a Jujutsu repository for your project, you can create a repository by pressing Cmd-N. You may find it easier to create the repository from the Terminal by running the `jj git init` command. The Creating a New Repository page has detailed instructions on creating a new repository.

If you have a git repository for your project, you can create a Jujutsu repository by cloning the git repository. Choose Repository > Clone in Jjewel to clone a git repository. The Cloning a Repository page has detailed instructions on cloning a repository.

## Changes

The repository for your project contains a collection of changes. When you do things like add files to a project, add code, remove code, remove files, and fix bugs, you create changes that the repository tracks.

Jjewel provides the following features for working with changes:

- Seeing changes and change details
- Adding changes to the repository
- Removing changes from the repository
- Editing a change's description
- Merging changes

## Remotes

A remote repository is a copy of the repository that is stored on someone else's computer. Remotes let you work with other people on projects and provide online backup for your code. Most of the time a remote is stored on a service like GitHub, GitLab, or Bitbucket.

Jjewel supports pushing the changes you make to the remote repository and pulling changes from the remote repository. Pulling lets you add the changes other people make to the project you're working on.

The following pages have more details on pushing and pulling:

- Pushing Changes to a Remote Repository
- Pulling Changes from a Remote Repository

Table of Contents