Frequently Asked Questions

General

Why doesn’t gitmux push directly to my destination branch?

That’s dangerous. Pull requests provide an audit trail and allow review before merging. gitmux creates a unique feature branch for each sync (update-from-<branch>-<sha>).

Can I use a local directory as the source?

Yes. Local paths are faster but using URLs ensures you don’t miss upstream updates.

Can I run gitmux multiple times?

Yes. gitmux is designed for repeated runs. Each run creates a new PR with the latest changes from the source.

Who is gitmux for?

  • Monorepo extractors — Fork a subset into a standalone repo
  • Gist upgraders — Turn a GitHub gist into a full repository
  • History preservers — Redo a copy-paste with proper git history
  • Git power users — Explore rebase strategies and conflict resolution
  • Automation bots — Keep downstream mirrors in sync via PRs

Conflicts

What if there are merge conflicts?

gitmux uses the rebase strategy specified by -X (default: theirs). With theirs, source changes are preferred. For complex conflicts, use -i for manual resolution.

Can I manage the rebase manually?

Yes! Use -i for interactive rebase. gitmux will give you a cd command to enter the workspace. Complete the rebase and push to the remote named destination.

Path Mapping

Can I migrate multiple directories at once?

Yes. Use the -m flag multiple times:

./gitmux.sh \
  -r source -t dest \
  -m 'src:pkg/src' \
  -m 'tests:pkg/tests' \
  -s

All paths are processed in a single operation, creating one branch and one PR.

How do I handle colons in path names?

Use \: to escape literal colons:

-m 'path\:with\:colons:destination'

Author Rewriting

How do I remove AI-generated attribution from commits?

Use --coauthor-action claude to remove Claude/Anthropic attribution while preserving human co-authors:

./gitmux.sh \
  -r source -t dest \
  --author-name "Your Name" \
  --author-email "you@example.com" \
  --coauthor-action claude \
  -s

Use --coauthor-action all to remove all co-author trailers.

What’s the difference between author and committer?

In git:

  • Author = who wrote the code
  • Committer = who applied the commit

They’re often the same person, but differ in scenarios like cherry-picking or rebasing. Use --author-* to change who wrote the code; use --committer-* to change who committed it.

Can I set author/committer options via environment variables?

Yes:

Option Environment Variable
--author-name GITMUX_AUTHOR_NAME
--author-email GITMUX_AUTHOR_EMAIL
--committer-name GITMUX_COMMITTER_NAME
--committer-email GITMUX_COMMITTER_EMAIL
--coauthor-action GITMUX_COAUTHOR_ACTION

Troubleshooting

How can I preview what gitmux will do before running it?

Use --dry-run (or -D). This shows you the source/destination, which commits would be affected, what author/committer changes would be made, and which co-author trailers would be removed — all without modifying anything.

How do I see more detailed output?

Use -v for verbose output (debug level), or set --log-level debug for maximum detail. Log levels from most to least verbose: debug, info (default), warning, error.

Why did gitmux fail before doing any work?

gitmux runs pre-flight checks to validate permissions and access before starting long-running operations. This prevents wasted time from failures late in the process.

Check the error message for what’s missing (e.g., repository access, branch existence). Use --skip-preflight to bypass these checks if you know what you’re doing.

How do I get faster performance?

Install git-filter-repo:

brew install git-filter-repo      # macOS
apt install git-filter-repo       # Debian/Ubuntu
pip install git-filter-repo       # Any platform

gitmux auto-detects and uses it when available for ~10x speedup. See Filter Backend for details.

The temp workspace wasn’t cleaned up

Use -k to intentionally keep the workspace for debugging. Otherwise, this might indicate gitmux was interrupted. The workspace location is printed in the output — you can safely delete it manually.


Back to top

This site uses Just the Docs, a documentation theme for Jekyll.