Create a stack
Learn how to create stacked branches with the Graphite CLI.

To create a stack of branches with the Graphite CLI, make sure you've:

If you're familiar with the git workflow, creating a branch and staging/committing changes shouldn't be new to you. While using a git-style workflow to create branches in Graphite still works, we strongly recommend that you follow the Graphite workflow when creating and editing branches:

  1. Add your changes directly on top of an existing branch. DON'T create an empty branch before doing so (we'll explain further down).

  2. Stage these changes using gt add -a to stage all of your files, or gt add <FILENAME> to stage individual files

  3. Create a new branch with these changes using gt create ...

This follows the traditional stacked changes workflow, treating each branch as an atomic changeset that contains (at least to start with) a single commit.

Graphite generally treats branches as if they were commits. This means that something you would break up into multiple commits in a typical git workflow, you would instead break up into multiple branches in Graphite (typically with one commit on each branch).

Here are a few ways to create a branch containing a single commit using gt create:

Terminal
# navigate to the trunk branch of your repository
gt trunk
# * build part 1 of your feature *
# the following two commands create a new branch off of main with your changes and add a commit
# add all unstaged changes (same syntax as git add)
gt add -A
# create a commit on a new branch with its name inferred from your commit message
gt create
# OR specify your commit message via an option, just like git
gt create -m "part 1"
# OR you can also specify a branch name yourself
gt create making_part_1
# This works too!
gt create -m "part 1" making_part_1
# If you don't run `add`, you'll be prompted to add your changes interactively.
# You can also run `add` as part of the create command with the `-a` flag
gt create -am "part 1"
# You can make the previous command even shorter by using an alias (most common gt commands have an alias, and you can even configure your own!)
gt c -am "part 1"

When using gt create, you can decide whether to pass in a branch name. A branch name is auto-generated from your commit message if a branch name isn't provided.

You can configure a prefix for gt create to add to all of your auto-generated branch names. See Configure the CLI for more details.

Once you've created a branch with your first set of changes, you can continue to build your stack by issuing more gt create commands as you work.

Terminal
# * build part 2 of your feature *
# create a new branch on your stack
gt create -am "part 2"
# * build part 3 of your feature *
# create another new branch on your stack
gt create -am "part 3"

If you have a large branch that you want to split up into a stack of smaller branches, you can use the gt split command. Learn more about splitting a branch.

Graphite
Git stacked on GitHub

Stacked pull requests are easier to read, easier to write, and easier to manage.
Teams that stack ship better software, faster.

Or install our CLI.
Product Screenshot 1
Product Screenshot 2