---
name: "git-annex-sync"
section: "1"
platform: "linux"
package: "git-annex"
version: "10.20261026-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/git-annex-sync"
---

# git-annex-sync(1)

synchronize local repository with remotes

## NAME

git-annex-sync - synchronize local repository with remotes

## SYNOPSIS

git annex sync **\[remote ...\]**

## DESCRIPTION

This command synchronizes the local repository with its remotes.

This command first commits any local changes to files that have previously been added to the repository. Then it does the equivilant of [git-annex-pull(1)](/git-annex-pull/1.md) followed by [git-annex-push(1)](/git-annex-push/1.md).

Unlike push and pull, this command defaults to avoiding transferring the content of annexed files to repositories that do not have  preferred content configured. This is a special case, to avoid a surprising behavior change. Using any option or configuration that enables content syncing, including **--content**, **--content-of**, and setting **annex.synccontent** will avoid this special case.

## OPTIONS

- **--no-content**, **-g**, **--content**

  -

  Use **--no-content** or **-g** to avoid transferring the content of annexed files.

-

  If you often use **--no-content**, you can set the **annex.synccontent** configuration to false to prevent transferring content by default. The **--content** option overrides that configuration.

-

  - **--content-of=path** **-C path**

  Only pull and push the content of annexed files in the given path.

-

  This option can be repeated multiple times with different paths.

-

  Note that this option does not prevent exporting other files to an  "exporttree=yes" remote.

-

  - **--commit**, **--no-commit**

  A commit is done by default (unless **annex.autocommit** is set to false).

-

  Use --no-commit to avoid committing local changes.

-

  - **--message=msg** **-m msg**

  Use this option to specify a commit message.

-

  If multiple -m options are given, their values are concatenated as separate paragraphs.

-

  - **--pull**, **--no-pull**

  Use this option to disable pulling.

-

  When **remote.\<name\>.annex-sync** is set to false, pulling is disabled for that remote, and using **--pull** will not enable it.

-

  - **--push**, **--no-push**

  Use this option to disable pushing.

-

  When **remote.\<name\>.annex-sync** is set to false, pushing is disabled for that remote, and using **--push** will not enable it.

-

  - Also all options supported by [git-annex-pull(1)](/git-annex-pull/1.md) and

  [git-annex-push(1)](/git-annex-push/1.md) can be used.

-

  - Also the [git-annex-common-options(1)](/git-annex-common-options/1.md) can be used.

  ## SEE ALSO

[git-annex(1)](/git-annex/1.md)

[git-annex-pull(1)](/git-annex-pull/1.md)

[git-annex-push(1)](/git-annex-push/1.md)

[git-annex-assist(1)](/git-annex-assist/1.md)

[git-annex-satisfy(1)](/git-annex-satisfy/1.md)

## AUTHOR

Joey Hess \<id@joeyh.name\>
