Markus Michalski FAQ

git-sync-all

git-sync-all: CLI tool that syncs all Git repositories in a directory tree (tags, commit, pull, push). Overview, quick start and links to the detail pages.

Deutsche Version

Back to Bash Scripts & Tools

git-sync-all

GitHub
License
Bash


Video tutorial

The video demonstrates the installation, first sync and key features of git-sync-all in under 4 minutes.

Video tutorial

Overview

git-sync-all is a Bash tool that synchronizes all Git repositories in a directory tree one after another: fetch tags, commit changes, pull from the remote and push local commits. One command replaces the manual round through every repository.

Built for developers who work on several machines and want all projects at the same state with a single call.

The tool also commits untracked files with git add -A and pushes without asking once you use --yes. Start new setups with --dry-run and read the Security page.

What happens per repository

  1. Fetch tags with git fetch --tags --prune-tags
  2. Detect changes in the working tree and commit them after a prompt (git add -A)
  3. Pull new commits from the upstream (rebase or merge)
  4. Push local commits

There is no force push, no branch switch and no tag push. If a pull fails, the tool aborts the rebase or merge itself.

Features

Quick start

git clone https://github.com/markus-michalski/git-sync-all.git
cd git-sync-all
make link PREFIX=$HOME/.local
git-sync-all --init-config
git-sync-all --dry-run
git-sync-all

Documentation

Page Content
Installation Requirements, Linux, macOS, Windows, alias, uninstall
Configuration All variables, placeholders, precedence
Usage Options, examples, exit codes, cron
Sync workflow What happens per repository, conflicts, stash
Inventory repos.yml, --verify, --issues
Security Auto-commit, deletion, config as script
Troubleshooting Messages, causes, solutions
Technical details Modules, flow, tests

Licensed under the MIT License.

Resource Link
GitHub repository https://github.com/markus-michalski/git-sync-all
Releases https://github.com/markus-michalski/git-sync-all/releases
Issues / bug reports https://github.com/markus-michalski/git-sync-all/issues