Skip to content

add target...

Add targets to the source state. If any target is already in the source state, then its source state is replaced with its current state in the destination directory.

Flags

-a, --autotemplate

Automatically generate a template by replacing strings that match variable values from the data section of the config file with their respective config names as a template string. Longer substitutions occur before shorter ones. This implies the --template option.

Warning

--autotemplate uses a greedy algorithm which occasionally generates templates with unwanted variable substitutions. Carefully review any templates it generates.

--create

Add files that should exist, irrespective of their contents.

--encrypt

Configuration: add.encrypt

Encrypt files using the defined encryption method.

--exact

Set the exact attribute on added directories.

--follow

If the last part of a target is a symlink, add the target of the symlink instead of the symlink itself.

-p, --prompt

Interactively prompt before adding each file.

-q, --quiet

Suppress warnings about adding ignored entries.

--secrets ignore|warning|error

Configuration: add.secrets

Action to take when a secret is found when adding a file. The default is warning.

-T, --template

Set the template attribute on added files and symlinks.

Configuration: add.templateSymlinks

When adding symlink to an absolute path in the source directory or destination directory, create a symlink template with .chezmoi.sourceDir or .chezmoi.homeDir. This is useful for creating portable absolute symlinks.

Common flags

-x, --exclude types

Exclude target state entries of specific types. The default is none.

Types can be explicitly included with the --include flag.

Example

--exclude=scripts will cause the command to not run scripts and --exclude=encrypted will exclude encrypted files.

-f, --force

Add targets, even if doing so would cause a source template to be overwritten.

-i, --include types

Include target state entries of specific types. The default is all.

Types can be explicitly excluded with the --exclude flag.

Example

--include=files specifies all files.

-r, --recursive

Recurse into subdirectories. Enabled by default. Can be disabled with --recursive=false.

Examples

$ chezmoi add ~/.bashrc
$ chezmoi add ~/.gitconfig --template
$ chezmoi add ~/.ssh/id_rsa --encrypt
$ chezmoi add ~/.vim --recursive
$ chezmoi add ~/.oh-my-zsh --exact --recursive

Notes

Bug

chezmoi add will fail if the entry being added is in a directory implicitly created by an external. See this GitHub issue for details.