git-bulk(1) - Run git commands on multiple repositories

1. git-bulk(1)
2. Git Extras
3. git-bulk(1)

## NAME

`git-bulk` - Run git commands on multiple repositories

## SYNOPSIS

    git-bulk [-q|--quiet] [-g] [--no-follow-symlinks] [--no-follow-hidden] ([-a]|[-w WS-NAME]) GIT-COMMAND
    git-bulk --addworkspace WS-NAME WS-ROOT-DIRECTORY (--from URL-OR-FILE)
    git-bulk --removeworkspace WS-NAME
    git-bulk --addcurrent WS-NAME
    git-bulk --purge
    git-bulk --listall

## DESCRIPTION

git bulk adds convenient support for operations that you want to execute on multiple git repositories.

- simply register workspaces that contain multiple git repos in their directory structure
- run any git command on the repositories of the registered workspaces in one command to `git bulk`
- use the "guarded mode" to check on each execution

## OPTIONS

-a

Run a git command on all workspaces and their repositories.

-g

Ask the user for confirmation on every execution.

--no-follow-symlinks

Do not traverse symbolic links under the workspace when searching for git repositories.

--no-follow-hidden

Do not traverse hidden (dotted) directories under the workspace when searching for git repositories.

-w WS-NAME

Run the git command on the specified workspace. The workspace must be registered.

GIT-COMMAND

Any git Command you wish to execute on the repositories.

--addworkspace WS-NAME WS-ROOT-DIRECTORY (--from URL-OR-FILE)

Register a workspace for bulk operations. All repositories in the directories below WS-ROOT-DIRECTORY get registered under this workspace with the name WS-NAME. WS-ROOT-DIRECTORY must be an absolute path.

With option '--from' the URL to a single repository or a file containing multiple URLs can be added and they will be cloned directly into the workspace. Suitable for the initial setup of a multi-repo project.

--removeworkspace WS-NAME

Remove the workspace with the logical name WS-NAME.

--addcurrent WS-NAME

Adds the current directory as workspace to git bulk operations. The workspace is referenced with its logical name WS-NAME.

git bulk --purge

Removes all defined repository locations.

git bulk --listall

List all registered repositories.

## EXAMPLES

    Register a workspace so that git bulk knows about it using an absolute path:

    $ git bulk --addworkspace personal ~/workspaces/personal

    Or register a workspace using an environment variable pointing to an absolute path:

    $ git bulk --addworkspace personal '$PERSONAL_WORKSPACE'

    Use option --from in order to directly clone a repository or multiple repositories

    $ git bulk --addworkspace personal ~/workspaces/personal --from https://github.com/tj/git-extras.git
    $ git bulk --addworkspace personal ~/workspaces/personal --from ~/repositories.txt

    repositories.txt
    ----------------------------------
    https://host-of-git/repo-1.git
    https://host-of-git/repo-2.git
    https://host-of-git/repo-3.git

    Register the current directory as a workspace to git bulk:

    $ git bulk --addcurrent personal

    List all registered workspaces:

    $ git bulk --listall

    Run a git command on the repositories of the current workspace:

    $ git bulk fetch

    Run a git command on the specified workspace and its repositories:

    $ git bulk -w personal fetch

    Run a git command but ask the user for confirmation on every execution (guarded mode):

    $ git bulk -g fetch

    Remove a registered workspace:

    $ git bulk --removeworkspace personal

    Remove all registered workspaces:

    $ git bulk --purge

## FILES

- `.gitconfig`: Store the `git-bulk` registered workspaces under the `bulkworkspaces` key.

## AUTHOR

Written by Niklas Schlimm <ns103@hotmail.de>

## REPORTING BUGS

<https://github.com/nschlimm/git-bulk>

## SEE ALSO

<https://github.com/tj/git-extras>

2. March 2026
3. git-bulk(1)