rpush

Recursively push root repository and nested git submodules to origin for a specified branch.

2|Updated Apr 24, 2026
One-click install
npx skills add https://github.com/geoyws/atmux --skill rpush
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: rpush
Source: https://github.com/geoyws/atmux/tree/main/.claude/skills/rpush
Command: npx skills add https://github.com/geoyws/atmux --skill rpush

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve?

This Skill prevents broken submodule pushes by ensuring every nested git submodule is pushed to the target branch before its parent repo updates its submodule pointers on origin.

Core Features & Use Cases

  • Leaves-first recursive pushing: Pushes deepest submodules first so parent submodule commit references already exist on origin.
  • Branch-aware scope: Recursively pushes only repos currently on the requested branch, skipping off-branch repos with a hint to check out first.
  • Operational report guidance: Produces attention/diagnostic verdict markers so operators can quickly identify skips vs. failures and what to do next.

Quick Start

Run rpush with the target branch so it recursively pushes the root repo and all nested submodules to origin for that same branch.

Frequently Asked Questions about rpush

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I push a git monorepo with submodules to a branch without breaking parent pointers?

Recursive submodule pushing prevents broken parent pointers by pushing deepest nested submodules first so their commit references already exist on origin before the parent repo updates its submodule pointers.

Why does pushing a git submodule fail when the parent repository points to a missing commit?

Pushing fails because the parent repository references a submodule commit that does not exist on origin yet, a problem solved by enforcing leaves-first ordering so nested submodules are pushed before their parents.

How do I recursively push all nested git submodules to the same branch in one step?

You can recursively push the root repository and all nested git submodules to origin by invoking the recursive push script with a mandatory target branch argument, which handles the entire tree in a single operation.

Can I skip git submodules that are not on the target branch during a recursive push?

Yes, branch-aware scope recursively pushes only repositories currently on the requested target branch and skips off-branch repositories, producing diagnostic hints to check out the correct branch first.

What is the best way to coordinate release pushes across a git monorepo with multiple submodules?

Coordinated release pushes across a monorepo are best handled by a recursive push script that enforces leaves-first ordering, ensuring all nested submodule updates land on origin before the parent repository updates its submodule pointers.

How do I identify which git submodules were skipped versus failed during a recursive push?

The recursive push script produces attention and diagnostic verdict markers so operators can quickly identify skips versus failures, showing exactly which repositories were off-branch and what to do next.