Installation and setup
Installation
Section titled “Installation”Download pre-built binaries for a release
Section titled “Download pre-built binaries for a release”There are pre-built binaries of the last released version of jj for
Windows, Mac, or Linux (the “musl” version should work on all distributions).
Cargo Binstall
Section titled “Cargo Binstall”If you use cargo-binstall, you
can install binaries of the latest jj release from GitHub as follows:
# Will put the jj binary for the latest release in ~/.cargo/bin by defaultcargo binstall --strategies crate-meta-data jj-cliWithout the --strategies option, you may get equivalent binaries that should
be compiled from the same source code.
From Source
Section titled “From Source”First make sure that you have a Rust version >= 1.88 and that the
build-essential package is installed by running something like this:
sudo apt-get install build-essentialNow run either:
# To install the *prerelease* version from the main branchcargo install --git https://github.com/jj-vcs/jj.git --locked --bin jj jj-clior:
# To install the latest releasecargo install --locked --bin jj jj-cliArch Linux
Section titled “Arch Linux”You can install the jujutsu package from the official extra repository:
pacman -S jujutsuOr install from the AUR repository with an AUR Helper:
yay -S jujutsu-gitIf you’re on NixOS you can install a released version of jj using the
nixpkgs jujutsu package.
To install a prerelease version, you can use the flake for this repository.
For example, if you want to run jj loaded from the flake, use:
nix run 'github:jj-vcs/jj'You can also add this flake url to your system input flakes. Or you can install the flake to your user profile:
# Installs the prerelease version from the main branchnix profile install 'github:jj-vcs/jj'Homebrew
Section titled “Homebrew”If you use Homebrew, you can run:
# Installs the latest releasebrew install jjGentoo Linux
Section titled “Gentoo Linux”dev-vcs/jj is available in the GURU repository.
Details on how to enable the GURU repository can be found here.
Once you have synced the GURU repository, you can install dev-vcs/jj via Portage:
emerge -av dev-vcs/jjopenSUSE Tumbleweed
Section titled “openSUSE Tumbleweed”jujutsu can be installed from the official openSUSE-Tumbleweed-Oss repository:
zypper install jujutsuFrom Source
Section titled “From Source”First make sure that you have a Rust version >= 1.88. You may also need to run:
xcode-select --installNow run either:
# To install the *prerelease* version from the main branchcargo install --git https://github.com/jj-vcs/jj.git \ --locked --bin jj jj-clior:
# To install the latest releasecargo install --locked --bin jj jj-cliHomebrew
Section titled “Homebrew”If you use Homebrew, you can run:
# Installs the latest releasebrew install jjMacPorts
Section titled “MacPorts”You can also install jj via the MacPorts jujutsu
port:
# Installs the latest releasesudo port install jujutsuWindows
Section titled “Windows”First make sure that you have a Rust version >= 1.88. Now run either:
# To install the *prerelease* version from the main branchcargo install --git https://github.com/jj-vcs/jj.git --locked --bin jj jj-clior:
# To install the latest releasecargo install --locked --bin jj jj-clivia winget:
# To install the latest release via wingetwinget install jj-vcs.jjvia scoop:
# To install the latest release via scoopscoop install main/jjInitial configuration
Section titled “Initial configuration”You may want to configure your name and email so commits are made in your name.
$ jj config set --user user.name "Martin von Zweigbergk"$ jj config set --user user.email "martinvonz@google.com"Command-line completion
Section titled “Command-line completion”Jujutsu provides 2 different command-line completion scripts.
Standard completions
Section titled “Standard completions”The standard completion script provides completions for jj subcommands and
options.
Dynamic completions
Section titled “Dynamic completions”The dynamic completion script provides completions for jj subcommands and
options, as well as additional completions, including bookmarks,
aliases, revisions, operations and files. Dynamic completions can be context
aware, for example they respect the global flags --repository and
--at-operation as well as some command-specific ones like --revision,
--from, and --to.
Dynamic completions are not the default/only option since the underlying engine is still labeled unstable. We expect to transition to them as the default once the engine is stabilized. Please let us know if you encounter any issues with dynamic completions.
source <(jj util completion bash)source <(COMPLETE=bash jj)autoload -U compinitcompinitsource <(jj util completion zsh)source <(COMPLETE=zsh jj)jj util completion fish | sourceCOMPLETE=fish jj | sourceNushell
Section titled “Nushell”jj util completion nushell | save -f completions-jj.nuuse completions-jj.nu * # Or `source completions-jj.nu`source-bash $(jj util completion)Powershell
Section titled “Powershell”jj util completion power-shell | Out-String | Invoke-Expression$env:COMPLETE = "powershell"jj | Out-String | Invoke-ExpressionRemove-Item Env:\COMPLETEInsert the above into your $PROFILE file
(usually $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1).