ingydotnet/git-subrepo

git-subrepo is a Git command that manages external repositories embedded as subdirectories within a parent repository, serving as an alternative to git...

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 41 minutes ago
Type:CLI ToolCategory(s):Git & Version ControlDeveloper Tools
Added to GitGenius on September 19th, 2026
Created on December 1st, 2013
Open Issues & Pull Requests: 201 (+0)
GitHub issues: Enabled
Number of forks: 291
Total Stargazers: 3,612 (+0)
Total Subscribers: 64 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 8.0 hours
Mean response time: 94.2 days
90th percentile: 140.2 days
Tracked items: 41

Most active contributors

Sign in to see contributor activity.

How this project is maintained

100% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Three people close 75% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 22
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 1,418 days
Stale 30+ days: 22
Stale 90+ days: 16

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • Enhancement (11)
  • Bug (3)
  • Question (2)

Most active issues this week

Detailed Description

git-subrepo is a Git command that manages external repositories embedded as subdirectories within a parent repository, serving as an alternative to git submodule and git subtree.

The tool solves the problem of integrating and maintaining external code dependencies while keeping them synchronized with upstream sources. It works by cloning an external repository into a subdirectory, then allowing upstream changes to be pulled in and local modifications to be pushed back. The approach distinguishes itself by condensing upstream history into single commits during clone and pull operations, while preserving full commit history for pushes back upstream. It stores metadata in a .gitrepo file that never gets pushed to the upstream repository, and generates well-named branches and remotes to support manual operations when needed.

Adoption suits teams with three distinct user roles: repository owners who want to avoid submodule synchronization complexity, regular users who simply clone the parent repository and automatically receive all subrepos without needing to install the tool, and collaborators who only need to install git-subrepo if they intend to push or pull changes. The tool handles operations that typically cause problems with alternatives, including branching, moving or renaming subrepo directories, and rebasing. It requires no configuration and keeps git history clean by avoiding the extraneous commits that other tools introduce. Subrepos can themselves contain nested subrepos, and different branches can maintain different subrepo states independently.

The project maintains active development with regular commits addressing bug fixes and feature improvements. The codebase shows consistent attention to edge cases and user experience refinements. Documentation is comprehensive and regularly updated to reflect current functionality. The tool continues to receive maintenance that ensures compatibility with modern Git versions and addresses issues reported by users.