datalad push


datalad push [-h] [-d DATASET] [--to SIBLING] [--since SINCE] [-f {all|gitpush|no-datatransfer|datatransfer}] [-r] [-R LEVELS] [-J NJOBS] [PATH [PATH ...]]


Push a dataset to a known sibling.

This makes the last saved state of a dataset available to a sibling or special remote data store of a dataset. Any target sibling must already exist and be known to the dataset.

Optionally, it is possible to limit a push to change sets relative to a particular point in the version history of a dataset (e.g. a release tag). By default, the state of the local dataset is evaluated against the last known state of the target sibling. An actual push is only attempted if there was a change compared to the reference state, in order to speed up processing of large collections of datasets. Evaluation with respect to a particular “historic” state is only supported in conjunction with a specified reference dataset. Change sets are also evaluated recursively, i.e. only those subdatasets are pushed where a change was recorded that is reflected in the current state of the top-level reference dataset. See “since” option for more information.

Only a push of saved changes is supported.

Power-user info: This command uses git push, and git annex copy to push a dataset. Publication targets are either configured remote Git repositories, or git-annex special remotes (if they support data upload).



path to contrain a push to. If given, only data or changes for those paths are considered for a push. Constraints: value must be a string

-h, --help, --help-np

show this help message. –help-np forcefully disables the use of a pager for displaying the help message

-d DATASET, --dataset DATASET

specify the dataset to push. Constraints: Value must be a Dataset or a valid identifier of a Dataset (e.g. a path)


name of the target sibling. If no name is given an attempt is made to identify the target based on the dataset’s configuration (i.e. a configured tracking branch, or a single sibling that is configured for push). Constraints: value must be a string

--since SINCE

specifies commit-ish (tag, shasum, etc.) from which to look for changes to decide whether pushing is necessary. If an empty string is given, the last state of the current branch at the sibling is taken as a starting point. Constraints: value must be a string

-f {all|gitpush|no-datatransfer|datatransfer}, --force {all|gitpush|no-datatransfer|datatransfer}

force particular operations, overruling automatic decision making: use –force with git-push (‘gitpush’); do not use –fast with git-annex copy (‘datatransfer’); do not attempt to copy annex’ed file content (‘no- datatransfer’); combine force modes ‘gitpush’ and ‘datatransfer’ (‘all’). Constraints: value must be one of (‘all’, ‘gitpush’, ‘no-datatransfer’, ‘datatransfer’, None)

-r, --recursive

if set, recurse into potential subdataset.

-R LEVELS, --recursion-limit LEVELS

limit recursion into subdataset to the given number of levels. Constraints: value must be convertible to type ‘int’

-J NJOBS, --jobs NJOBS

how many parallel jobs (where possible) to use. Constraints: value must be convertible to type ‘int’, or value must be one of (‘auto’,)


datalad is developed by The DataLad Team and Contributors <>.