Provided by: git-annex_10.20240129-1build1_amd64 bug

NAME

       git-annex-push - push content to remotes

SYNOPSIS

       git annex push [remote ...]

DESCRIPTION

       This  command  pushes  content to remotes. It uploads both git repository content, and the
       content of annexed files.

       You can use git push and git-annex copy by hand to do the same thing as this command,  but
       this  command  handles several details, including making sure that the git-annex branch is
       pushed to the remote.

       When using git-annex, often remotes are not bare repositories, because it's helpful to add
       remotes for nearby machines that you want to access the same annexed content. Pushing to a
       non-bare remote will not normally update the remote's current branch with changes from the
       local      repository.      (Unless      the      remote      is      configured      with
       receive.denyCurrentBranch=updateInstead.)

       To make working with such non-bare remotes easier, this  command  pushes  not  only  local
       master  to  remote  master,  but  also  to  remote  synced/master  (and similar with other
       branches). When git-annex pull (or git-annex sync) is later run on  the  remote,  it  will
       merge the synced/ branches that were pushed to it.

       Some  special  remotes  allow exporting a tree of files to them (exporttree=yes), and this
       command can be used to push to those remotes as well as  regular  git  remotes.  See  git-
       annex-export(1)  for  details  about  how  those  special  remotes work. In order for this
       command to export to a special remote, remote.<name>.annex-tracking-branch  also  must  be
       configured, and have the same value as the currently checked out branch.

       When  git-annex-adjust(1) has been used to check out an adjusted branch, this command will
       propagate changes that have been made back to the parent branch, without  propagating  the
       adjustments.

       Normally  this  tries  to  upload  the content of each annexed file that is in the working
       tree, to any remote that it's pushing to that does not have a copy. To control which files
       are  uploaded  to  a remote, configure the preferred content of the remote. When a file is
       not the preferred content of a remote, or of the local repository, this command  will  try
       to drop the file's content.  See git-annex-preferred-content(1).

OPTIONS

       [remote]

              By  default,  this command pushes to all available remotes, except for remotes that
              have  remote.<name>.annex-push  (or  remote.<name>.annex-sync)  set  to  false   or
              remote.<name>.annex-readonly set to true.

              By  specifying  the names of remotes (or remote groups), you can control which ones
              to push to.

       --fast Only push to the remotes with the lowest annex-cost value configured.

              When a list of remotes (or remote groups) is provided, it picks from amoung  those,
              otherwise it picks from amoung all remotes.

       --only-annex -a, --not-only-annex
              Only  pull  the  git-annex  branch  and annexed content from remotes, not other git
              branches.

              The annex.synconlyannex configuration can be set  to  true  to  make  this  be  the
              default behavior. To override such a setting, use --not-only-annex.

              When this is combined with --no-content, only the git-annex branch will be pulled.

       --no-content, -g, --content
              Use  --no-content  or  -g  to avoid uploading (and dropping) the content of annexed
              files.

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

       --content-of=path -C path
              Only upload (or drop) annexed files in the given path.

              This option can be repeated multiple times with different paths.

              Note that this option is ignored when syncing with "exporttree=yes" remotes.

       --all -A
              Usually this command operates on annexed files in the current branch.  This  option
              makes  it  operate  on  all available versions of all annexed files (when preferred
              content settings allow).

              Note that preferred content settings that use include= or exclude= will only  match
              the version of files currently in the work tree, but not past versions of files.

       --jobs=N -JN
              Enables  parallel  pushing with up to the specified number of jobs running at once.
              For example: -J10

              Setting this to "cpus" will run one job per CPU core.

       --cleanup
              Removes the local and remote synced/ branches, which were  created  and  pushed  by
              git-annex push or git-annex sync. This option prevents all other activities.

              This can come in handy when you've pushed a change to remotes and now want to reset
              your master branch back before that change. So you run git reset and force-push the
              master  branch  to remotes, only to find that the next git annex merge or git annex
              pull brings the changes back. Why? Because  the  synced/master  branch  is  hanging
              around  and  still  has the change in it. Cleaning up the synced/ branches prevents
              that problem.

       Also the git-annex-common-options(1) can be used.

SEE ALSO

       git-annex(1)

       git-annex-pull(1)

       git-annex-sync(1)

       git-annex-preferred-content(1)

       git-annex-satisfy(1)

AUTHOR

       Joey Hess <id@joeyh.name>

                                                                                git-annex-push(1)