2AYYR6FKMBQ7FS2U5DNFGZCYPJ2A2L7WSXKHIIYPHV5UWPM4VYYAC
# pijul add
Add files and directories to the tree
## Usage
```cmd
pijul add [-h | --help] [--recursive] [-V | --version] [--repository <repository>] [<file>…]
```
## Description
Adds directories and files to the
[tree](./getting_started.html#definitions), which is the set of files
currently tracked by Pijul.
The tree's structure is supposed to mirror almost exactly the
filesystem, with a few extra bits of information to synchronise it
with the pristine.
## Example
When starting a Rust project, it is common to add `Cargo.toml` and
`src/lib.rs` from the repository root:
```
pijul add Cargo.toml src/lib.rs
```
## Options
- -h, --help
Print a help message and exit.
- --recursive
Recursively add all the files in the directories in argument \<file\>…
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- \<file\>…
A list of files to add to the tree.
# pijul add
Adds a path to the tree.
Pijul has an internal tree to represent the files currently tracked. This command adds files and
directories to that tree.
## Usage
```
pijul add [OPTIONS] [paths]...
```
## Args
`<paths>...`
`Paths to add to the internal tree`
Paths to add to the internal tree
## Flags
`-h, --help`
`Prints help information`
Prints help information
`-V, --version`
`Prints version information`
Prints version information
## Options
`--repository <repo-path>`
--repository <repo-path>
`Set the repository in which paths must be added. Defaults to the first ancestor of the`
Set the repository in which paths must be added. Defaults to the first ancestor of the
`current directory that contains a `.pijul` directory`
current directory that contains a `.pijul` directory
-V, --version
-h, --help
<paths>...
# pijul apply
Apply patches by their hash or patch file
## Usage
```cmd
pijul apply [-h | --help] [-V | --version] [--repository <repository>] [--branch <branch>] [<patch>…]
```
## Description
This command is essentially meant to be called by [pijul
push](./reference/push.html) over SSH.
It applies patches to a branch in the pristine, either to the current
branch (if `--branch` is not specified), or to branch \<branch\>.
If that branch does not exist, it will be created.
\<patch\> must be a list of patch hashes or internal identifiers. If
empty, gzipped-compressed patch files are read from the standard
input. In other words, running `pijul apply hashhashhash` is
equivalent on Unix to running `cat .pijul/patches/hashhashhash.gz |
pijul apply`.
## Example
Apply the first patch in Pijul's development repository:
```
pijul apply AbaeCc9Y9jxGRgkapqjMv66dfZEvSUf3biXZa2LpcYx-CY646dQ9HFmL4R6x9Mez_cCz5QwW4w38P1O4bwVsjjI
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- --branch \<branch\>
Apply the patches to branch \<branch\> instead of the current branch.
- \<patch\>…
A list of patch hash or internal identifiers to apply to the branch.
# pijul apply
Applies one channel to other
## Usage
```
pijul apply [FLAGS] [OPTIONS] [change]
```
## Args
`<change>`
## Flags
`--deps-only`
`-h, --help`
Prints help information
`-V, --version`
Prints version information
## Options
`--channel <channel>`
`--repository <repo-path>`
# pijul archive
Creates an archive of the repository
## Usage
```
pijul archive [FLAGS] [OPTIONS] -o <name>
```
## Flags
Prints help information
`-k`
Do not check certificates
`-V, --version`
Prints version information
## Options
`--change <change>...`
`--channel <channel>`
`-o <name>`
`--prefix <prefix>`
`--remote <remote>`
`--repository <repo-path>`
`--state <state>`
`-h, --help`
# pijul change
Shows information about a particular change
## Usage
```
pijul change [OPTIONS] [hash]
```
## Args
`<hash>`
## Flags
Prints help information
`-V, --version`
Prints version information
## Options
`--channel <channel>`
`--repository <repo-path>`
`-h, --help`
# pijul channel
Manages different channels
## Usage
```
pijul channel [OPTIONS] [SUBCOMMAND]
```
## Flags
`-V, --version`
Prints version information
## Options
`--repository <repo-path>`
## Subcommands
`delete`
Delete a channel. The channel must not be the current channel
`help`
Prints this message or the help of the given subcommand(s)
`rename`
Rename a channel
`switch`
Switch to a channel. There must not be unrecorded changes in the working copy
`-h, --help`
Prints help information
# pijul clone
Clone a repository into a new directory
## Usage
```cmd
pijul clone [-h | --help] [-V | --version] [ --from-branch <from_branch> ] [--patch <patch> …] [(-p | --port) <port>] [--to-branch <to_branch>] <from> [to]
```
## Description
Clone a single branch of a remote repository, i.e. initialise a new
repository, and apply all patches from a branch from the remote
repository. This is equivalent to `pijul init`, followed by `pijul
pull`.
## Example
From outside a repository:
```
pijul clone https://nest.pijul.com/pijul_org/pijul
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --from-branch \<from-branch\>
Clone branch \<from-branch\> from the remote repository, instead of
the default branch (which is "master").
- \<from\>
A URI to clone. At the moment, only local paths, SSH paths (such as
`me@example.com:path/to/repository`) and HTTP(S) URLs are supported.
- --patch \<patch\> …
Pull patch \<patch\> and its dependencies. Can appear multiple times on the command line.
- -p \<port\>, --port \<port\>
If the repository is accessed over SSH, the port of the remote SSH
server, defaulting to 22 (the standard SSH port).
- --to-branch \<branch\>
Store this branch as \<branch\> instead of using the same name as
the remote branch.
- [to]
Path to the local directory where the repository will be cloned,
defaulting to the current directory followed by the basename of the
URI in <from>.
# pijul clone
Clones an existing pijul repository
## Usage
```
pijul clone [FLAGS] [OPTIONS] <remote> [--] [path]
```
## Args
`<remote>`
`<path>`
## Flags
`-h, --help`
Prints help information
`--lazy`
only download changes with alive contents
`-k`
Do not check certificates
`-V, --version`
Prints version information
## Options
set the remote channel [default: main]
`--path <partial-paths>...`
clone this path
`--state <state>`
clone this state
`--change <change>`
clone this change and its dependencies
`--channel <channel>`
# pijul credit
Annotate a file with the patch that last touched each line
## Usage
```cmd
pijul credit [-h | --help] [-V | --version] [--repository <repository>] [--branch <branch>] <file>
```
## Description
Prints an annotated version of the file named `<file>` *in the
pristine* on the standard output, where each line is prefixed by the
patch that introduced it (or the last patch that modified it).
This command doesn't take the version of `<file>` in the working copy,
and only considers the pristine.
## Example
From the repository root, with a file named `Cargo.toml` in directory `pijul`:
```
pijul credit pijul/Cargo.toml
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- --branch \<branch\>
Annotate the file in branch \<branch\> instead of the current branch.
- \<file\>
The name of the file to annotate
# pijul credit
Shows which patch last affected each line of the every file
## Usage
```
pijul credit [OPTIONS] <file>
```
## Args
`<file>`
## Flags
Prints help information
`-V, --version`
Prints version information
## Options
`--channel <channel>`
`--repository <repo-path>`
`-h, --help`
# pijul diff
Show changes since the last recorded version
## Usage
```cmd
pijul diff [-h | --help] [-V | --version] [ --myers ] [ --patience ] [--repository <repository>] [--branch <branch>] [prefix…]
```
## Description
Print the difference between the pristine and the working copy, or in
other words, what would be recorded if `record` were called now.
This command can compare another branch than the current one using the
`--branch` argument, and can compare the directory or file in
`<prefix>` instead of the whole directory.
## Example
Show all the changes in the "src" and "tests" directories.
```
pijul diff src tests
```
## Options
- -h, --help
Print a help message and exit.
- --myers
Use [Myers' diff algorithm](../theory/diff.md). This is the default behaviour, and this flag exists for consistency only.
- --patience
Use [Patience diff](https://en.wikipedia.org/wiki/Patience_sorting#Algorithm_for_finding_a_longest_increasing_subsequence), with Myers diff between common unique lines.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- --branch \<branch\>
Compare branch \<branch\> instead of the current branch (the default).
- [prefix…]
A (possibly empty) list of paths in the repository to compare with
the pristine. If empty, the whole repository is compared.
# pijul diff
Shows difference between two channels/changes
## Usage
```
pijul diff [FLAGS] [OPTIONS] [prefixes]...
```
## Args
`<prefixes>...`
## Flags
`-h, --help`
Prints help information
`--json`
`--short`
`--tag`
`-V, --version`
Prints version information
## Options
`--channel <channel>`
`--repository <repo-path>`
# pijul fork
Fork a branch into a new one.
## Usage
```cmd
pijul fork [-h | --help] [-V | --version] [--repository <repository>] [--branch <branch>] <to>
```
## Description
Create a new branch with the same contents as branch `<branch>`, or as
the current branch if `--branch` is not specified.
Branches in Pijul are light, and running this command writes very few
bytes on the disk.
Note that the purpose of branches in Pijul is quite different from
Git, since Git's "feature branches" can usually be implemented by
just patches.
## Example
When initialising a repository, a branch called "master" is
created. To create its first fork, and call it "unstable", do:
```
pijul fork unstable
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- --branch \<branch\>
Fork branch \<branch\> instead of the current branch (the default).
- [to]
Name of the new branch.
# pijul fork
Create a new channel
## Usage
```
pijul fork [OPTIONS] <to>
```
## Args
`<to>`
## Flags
`-h, --help`
Prints help information
`-V, --version`
Prints version information
## Options
`--change <change>`
`--channel <channel>`
`--repository <repo-path>`
# pijul init
Initialise a new repository
## Usage
```cmd
pijul init [-h | --help] [-V | --version] <directory>
```
## Description
Initialise a new repository in directory `<directory>`, if specified,
or in the current directory else.
## Example
```
pijul init
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- \<directory\>
The directory of the new repository.
# pijul init
Initializes an empty pijul repository
## Usage
```
pijul init [OPTIONS] [path]
```
## Args
`<path>`
## Flags
`-h, --help`
Prints help information
`-V, --version`
Prints version information
## Options
`--channel <channel>`
# pijul log
List all the patches in a branch
## Usage
```cmd
pijul log [-h | --help] [-V | --version] [ --hash-only ] [ --internal-id <internal-id>… ] [--repository <repository>] [--branch <branch>] [--grep <regex>]
```
## Description
Prints the list of all patches applied to branch `<branch>` if
`--branch` is present, or to the current branch else. The patches are
printed in the reverse order in which they were applied to the branch,
and the information printed includes patch hashes, internal
identifiers, among others.
If desired, a restricted subset of the changes, specified by `--internal-id`, can be listed. Here, `<internal-id>` is a list of internal patch identifiers, where an internal patch identifier is of the form `tp4Jz1j2PEY`.
`--hash-only` prints a list of patches in a machine-readable format, to be exchanged when comparing patchsets between repositories.
## Example
From the repository root:
```
pijul log
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- --branch \<branch\>
Print changes on branch \<branch\> instead of the current branch.
- --hash-only
Print the changes in binary format. This option is essentially meant
to be used when calling this command remotely over SSH.
- --internal-id \<internal-id\>…
Restrict the list to the set of patches specified by
\<internal-id\>. One could for example run
```
pijul log --internal-id EuTRmk0mzNk tp4Jz1j2PEY
```
- --grep \<regex\>
Select only patches matching the supplied regular expression (may
appear several times).
# pijul log
Show the entire log of changes
## Usage
```
pijul log [FLAGS] [OPTIONS]
```
## Flags
`--description`
`--hash-only`
`-h, --help`
Prints help information
`--state`
## Options
`--channel <channel>`
`--repository <repo-path>`
Prints version information
`-V, --version`
# pijul ls
List files in the repository
## Usage
```cmd
pijul ls [-h | --help] [-V | --version] [--repository <repository>] [dir]…
```
## Description
Lists all the files in directory `<dir>`, that are currently tracked
in repository `<repository>` (or the repository in the current
directory if `--repository` is missing).
## Example
```
pijul ls src tests
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- [div]…
List of directories to list. If this list is empty, the whole directory is listed.
# pijul ls
Lists files tracked by pijul
## Usage
```
pijul ls [OPTIONS]
```
## Flags
Prints help information
`-V, --version`
## Options
`--repository <repo-path>`
Prints version information
`-h, --help`
# pijul mv
Move and rename files and directories
## Usage
```cmd
pijul mv [-h | --help] [-V | --version] [--repository <repository>] <files>…
```
## Description
Move and/or rename files and directories. The files listed in
`<files>` must all be in the tree. `<files>` must contain at least two
paths.
If `<files>` contains exactly two paths, and the second path is an
existing directory, the first file or directory is moved to the second
one. If the second path is not an existing directory, the name of the
first file or directory is changed to the second one.
If `<files>` contains n > 2 paths, the last path *must* be an existing
directory, and the first n - 1 files or directories are moved to the
last path.
## Example
```
pijul mv a b
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- \<files\>…
List of at least two paths, as explained in the description above.
# pijul mv
Moves a file in the working copy and the tree
## Usage
```
pijul mv [OPTIONS] [paths]...
```
## Args
`<paths>...`
## Flags
`-h, --help`
Prints help information
`-V, --version`
Prints version information
## Options
`--repository <repo-path>`
# pijul pull
Pull a patch from a remote repository
## Usage
```cmd
pijul pull [-h | --help] [-V | --version] [--repository <repository>] [--from-branch <from_branch>] [(-p | --port) <port>] [--to-branch <to_branch>] [--set-remote <set-remote>] [--set-default] [-a | --all] [remote]
```
## Description
Pull patches from a remote repository to a branch of a local
repository to a branch. Patch selection is either interactive, or
includes all patches in the current branch if `-a` (or `--all`) is
present.
If the `<to_branch>` does not exist in the local repository, it will
be created. If the `<from_branch>` does not exist in the remote
repository, this command does nothing.
This command can also save remote repositories, in two different ways:
- If `--set-default` is specified, the remote destination becomes the
default destination, and it is not necessary to give it a
name. Subsequent pulls to the same address can be done by simply
running `pijul pull`.
It is not necessary to give a name (using `--set-remote`) to the
default destination, although it is possible.
- If `--set-remote` is specified, the remote destination is saved as
`<set-remote>`, and can be reused in subsequent commands. For
example, after calling `pijul pull me@nest.pijul.com:example
--set-remote nest`, pulling from the same address
(me@nest.pijul.com:example) again can be done by running
`pijul pull nest`.
Saved remote repositories are written to ".pijul/meta.toml" (at the
root of the repository).
## Examples
```
pijul pull me@nest.pijul.com:example --set-remote nest
pijul pull nest -a
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- --from-branch \<from-branch\>
Pull patches from branch \<from-branch\> in the remote repository,
instead of the default branch ("master").
- -p \<port\>, --port \<port\>
If the remote repository is accessed over SSH, the port of the
remote SSH server, defaulting to 22 (the standard SSH port).
- --to-branch \<to-branch\>
Pull patches to branch \<to-branch\> in the local repository,
instead of the current branch.
- --set-remote \<set-remote\>
Save this remote repository as \<set-remote\>. In subsequent
commands, name \<set-remote\> can be used instead of this URI.
- --set-default
Make this remote repository the default. If subsequent commands
involving remote repositories are called without a URI, the default
remote repository will be used as the URI.
- -a, --all
Don't select patches to pull interactively, pull all patches
instead.
- [remote]
Name or URI of the remote repository. A name can be for instance
"nest", while a URI can be a HTTP or HTTPS URL, or an SSH address
(such as "me@nest.pijul.com:repository"), or a local path.
# pijul pull
Pulls changes from a remote upstream
## Usage
```
pijul pull [FLAGS] [OPTIONS] [from] [-- <changes>...]
```
## Args
`<from>`
`<changes>...`
Pull changes from the local repository, not necessarily from a channel
## Flags
`-a, --all`
`--full`
Download full changes, even when not necessary
`-h, --help`
Prints help information
`-k`
Do not check certificates
`-V, --version`
Prints version information
## Options
`--from-channel <from-channel>`
`--path <path>`
`--repository <repo-path>`
`--channel <channel>`
# pijul push
Push a patch to a remote repository
## Usage
```cmd
pijul push [-h | --help] [-V | --version] [--repository <repository>] [--from-branch <from_branch>] [(-p | --port) <port>] [--to-branch <to_branch>] [--set-remote <set-remote>] [--set-default] [-a | --all] [--force] [remote]
```
## Description
Push patches from a branch of a local repository to a branch of a
remote repository. Patch selection is either interactive, or includes
all patches in the current branch if `-a` (or `--all`) is present.
If the `<to_branch>` does not exist in the remote repository, it will
be created. If the `<from_branch>` does not exist in the local
repository, this command does nothing.
This command can also save remote repositories, in two different ways:
- If `--set-default` is specified, the remote destination becomes the
default destination, and it is not necessary to give it a
name. Subsequent pushes to the same address can be done by simply
running `pijul push`.
It is not necessary to give a name (using `--set-remote`) to the
default destination, although it is possible.
- If `--set-remote` is specified, the remote destination is saved as
`<set-remote>`, and can be reused in subsequent commands. For
example, after calling `pijul push me@nest.pijul.com:example
--set-remote nest`, pushing to the same address
(me@nest.pijul.com:example) again can be done by running
`pijul push nest`.
Saved remote repositories are written to ".pijul/meta.toml" (at the
root of the repository).
Finally, push refuses to apply patches to the remote side if the
remote side has patches not in the local branch. This behaviour can be
overriden with `--force`.
## Examples
```
pijul push me@nest.pijul.com:example --set-remote nest
pijul push nest
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- --from-branch \<from-branch\>
Push patches from branch \<from-branch\> in the local repository,
instead of the current branch (the default).
- -p \<port\>, --port \<port\>
If the remote repository is accessed over SSH, the port of the
remote SSH server, defaulting to 22 (the standard SSH port).
- --to-branch \<to-branch\>
Push patches to branch \<to-branch\> in the remote repository,
instead of the default branch ("master").
- --set-remote \<set-remote\>
Save this remote repository as \<set-remote\>. In subsequent
commands, name \<set-remote\> can be used instead of this URI.
- --set-default
Make this remote repository the default. If subsequent commands
involving remote repositories are called without a URI, the default
remote repository will be used as the URI.
- -a, --all
Don't select patches to push interactively, push all patches
instead.
- --force
Force a non-fast-forward push.
- [remote]
Name or URI of the remote repository. A name can be for instance
"nest", while a URI can be a HTTP or HTTPS URL, or an SSH address
(such as "me@nest.pijul.com:repository"), or a local path.
# pijul push
Pushes changes to a remote upstream
## Usage
```
pijul push [FLAGS] [OPTIONS] [to] [-- <changes>...]
```
## Args
`<changes>...`
Push only these changes
## Flags
`-a, --all`
`-h, --help`
Prints help information
`-k`
Do not check certificates
`-V, --version`
Prints version information
## Options
`--channel <channel>`
`--path <path>`
`--repository <repo-path>`
`--to-channel <to-channel>`
`<to>`
# pijul record
Record the changes in the working copy, creating a patch
## Usage
```cmd
pijul record [-h | --help] [-V | --version] [--repository <repository>] [--branch <branch>] [(-A | --author) <author>] [(-m | --message) <message>] [--depends-on <depends-on>…] [-a | --all] [prefix]…
```
## Description
Record is the only command for creating patches in Pijul.
This command compares the pristine with the working copy, creates a
patch, applies it to the pristine, and synchronises file moves.
A patch is then saved to .pijul/patches (from the root of the
repository), and can later be exchanged with
[push](./reference/push.html) and [pull](./reference/pull.html).
By default, the comparison happens between the whole pristine and the
whole working copy. It can also be restricted to a list of paths,
specified as `[prefix]`.
If this is the first command to be run after installing Pijul for the
first time, a file named ~/.pijulconfig/config.toml will be created, and
your author name will be saved there.
When using Pijul, it is highly recommended to sign your
patches. Record automatically does this after [keys have been
setup](./signing_patches.html).
## Interative use
When `pijul record` is invoked interactively, the user will be asked a
series of questions with the prompt `[ynkad]`. The possible answers are:
* `y`: include the change in the patch.
* `n`: don't include the change in the patch.
* `k`: undo the previous answer and go back to the previous change.
* `a`: include all the following changes in the patch.
* `d`: do not include any of the following changes in the patch.
## Examples
```
pijul record -a -m "My first patch" -A "me <me@example.com>" src
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in
\<repository\> instead.
- --branch \<branch\>
Compare branch \<branch\>, instead of the current branch, with the
working copy.
- -A, --author
Set the patch's author. By default, the first patch you create on
any repository after installing Pijul saves your author name in
"~/.pijulconfig/config.toml".
- -m, --message
Add a message to this patch, summarising your changes.
- --depends-on \<depends-on\>
Add a list of dependencies to this patch. Dependencies are normally
inferred by Pijul, but some semantic dependencies cannot be
inferred. Use this command to add them.
- -a, --all
Don't select patches to push interactively, push all patches
instead.
- [prefix]…
Restrict the comparison to a list of paths instead of comparing the
whole repository.
# pijul record
Creates a new change
## Usage
```
pijul record [FLAGS] [OPTIONS] [prefixes]...
```
## Args
`<prefixes>...`
## Flags
`-a, --all`
`-h, --help`
Prints help information
`-S`
`--stdin`
`--tag`
`-V, --version`
## Options
`--amend <amend>`
`--author <author>`
`--channel <channel>`
`-m, --message <message>`
`--repository <repo-path>`
`--timestamp <timestamp>`
Prints version information
# pijul remote delete
## Usage
```
pijul remote delete <remote>
```
## Args
`<remote>`
## Flags
`-h, --help`
Prints help information
`-V, --version`
Prints version information
# pijul remote
View and modify saved remote repositories.
## Usage
```
pijul remote [-h | --help] [-V | --version] [SUBCOMMAND]
```
## Description
Pijul can save remote repositories under names for easy usage. The remote
command can show and update the names for remote repositories.
## Subcommands
- **default:** sets the default remote to be used
- **delete:** remotes the name for the remote
- **list:** lists current remotes
- **set:** adds or updates a remote
# pijul remote
Manages remote repositories
## Usage
```
pijul remote [OPTIONS] [SUBCOMMAND]
```
## Flags
`-h, --help Prints help information`
`-V, --version Prints version information`
## Options
`--repository <repo-path>`
## Subcommands
`delete`
`help Prints this message or the help of the given subcommand(s)`
# pijul remote
Manages remote repositories
## Usage
```
pijul remote [OPTIONS] [SUBCOMMAND]
```
## Flags
`-h, --help`
Prints help information
`-V, --version`
Prints version information
## Options
`--repository <repo-path>`
## Subcommands
`delete`
`help`
Prints this message or the help of the given subcommand(s)
# pijul remove
Stop tracking a file (does *not* delete the file from the filesystem).
## Usage
```
pijul remove [-h | --help] [-V | --version] [--repository <repository>] <files>…
```
## Description
Removes files from the tree. This does not remove files from the local
filesystem. However, a patch removing a file will delete it from
remote repositories when pushing or pulling.
## Example
```
pijul mv a b
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- \<files\>…
List of files to remove from the tree.
# pijul remove
Removes a file from the tree and prestine
## Usage
```
pijul remove [OPTIONS] [paths]...
```
## Args
`<paths>...`
## Flags
`-h, --help`
Prints help information
`-V, --version`
Prints version information
## Options
`--repository <repo-path>`
# pijul reset
Reverts the working copy to the given Hash
## Usage
```
pijul reset [FLAGS] [OPTIONS] [files]...
```
## Args
`<files>...`
## Flags
`--dry-run`
`-h, --help`
Prints help information
`-V, --version`
## Options
`--change <change>`
`--channel <channel>`
`--repository <repo-path>`
Prints version information
# pijul unrecord
Unapplies a patch from a branch.
## Usage
```cmd
pijul unrecord [-h | --help] [-V | --version] [--repository <repository>] [--branch <branch>] <patch>…
```
## Description
Unapplies a patch from a branch of the pristine (defaulting to the
current branch if `--branch` is absent). After calling this command,
running `pijul record` on the same branch will ask to create the same
patch again.
This is an essential tool to undo mistakes, and has a variety of other
uses. It is used internally to merge remote patches with unrecorded
changes when pulling and pushing, for instance.
## Example
```
pijul unrecord AfcVxwCRgKbf-aCS0wOuXAekoRNl9xIGM-_0A_KzgZPEZ_55-5klp15WWTjFRtLVDlacWDAas11yrROdlyU11i8
```
## Options
- -h, --help
Print a help message and exit.
- -V, --version
Print the version of Pijul and exit.
- --repository \<repository\>
Don't run this command in the current directory, run it in \<repository\> instead.
- --branch \<branch\>
Unrecord on branch \<branch\> instead of the current branch (the default).
- \<patch\>…
A list of patch hashes to unrecord. Pijul will ask interactively
which patches to unrecord if and only if this list is empty.
# pijul unrecord
Unrecords all changes upto the given hash
## Usage
```
pijul unrecord [OPTIONS] [change-id]...
```
## Args
`<change-id>...`
identifier of the change (unambiguous prefixes are accepted)
## Flags
`-h, --help`
Prints help information
`-V, --version`
Prints version information
## Options
`--channel <channel>`
`--repository <repo-path>`