{"id":50389341,"url":"https://github.com/illegalstudio/ggg","last_synced_at":"2026-05-30T17:04:02.231Z","repository":{"id":360728462,"uuid":"897821885","full_name":"illegalstudio/ggg","owner":"illegalstudio","description":"Clone and manage multiple Git repositories from a YAML config with a fast Go CLI.","archived":false,"fork":false,"pushed_at":"2026-05-27T15:48:03.000Z","size":315,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-27T17:23:12.087Z","etag":null,"topics":["cli","developer-tools","git","git-repositories","go","golang","productivity","repository-management"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/illegalstudio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"nahime0"}},"created_at":"2024-12-03T09:52:28.000Z","updated_at":"2026-05-27T15:48:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/illegalstudio/ggg","commit_stats":null,"previous_names":["illegalstudio/ggg"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/illegalstudio/ggg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illegalstudio%2Fggg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illegalstudio%2Fggg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illegalstudio%2Fggg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illegalstudio%2Fggg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/illegalstudio","download_url":"https://codeload.github.com/illegalstudio/ggg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illegalstudio%2Fggg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33700907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","developer-tools","git","git-repositories","go","golang","productivity","repository-management"],"created_at":"2026-05-30T17:04:01.428Z","updated_at":"2026-05-30T17:04:02.226Z","avatar_url":"https://github.com/illegalstudio.png","language":"Go","funding_links":["https://github.com/sponsors/nahime0"],"categories":[],"sub_categories":[],"readme":"# GGG (Go Git Get)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Follow @nahime0](https://img.shields.io/badge/Follow%20%40nahime0-black?logo=x\u0026logoColor=white)](https://x.com/nahime0)\n\n\u003e For updates and news, follow me on [X @nahime0](https://x.com/nahime0).\n\nClone and manage git repositories from a YAML configuration file.\n\nGGG has a brother, [GGW](https://github.com/illegalstudio/ggw), that helps you manage your git worktrees.\n\n## Installation\n\n### Homebrew\n\n```bash\nbrew install illegalstudio/tap/ggg\n```\n\n### Go\n\n```bash\ngo install github.com/illegalstudio/ggg/cmd/ggg@latest\n```\n\n### From source\n\n```bash\ngit clone https://github.com/illegalstudio/ggg.git\ncd ggg\nmake \u0026\u0026 make install\n```\n\n## Quick Start\n\n```bash\n# Generate a default configuration file\nggg init\n\n# Edit the config to add your repositories\n# vim ~/.config/ggg/repositories.yaml\n\n# Clone all configured repositories\nggg clone\n\n# Clone a specific repository\nggg clone github.com/user/repo\n\n# List repositories and their status\nggg list\n\n# Optional: enable gcd and shell completions\neval \"$(ggg shell-init zsh)\"\n\n# Print the installed version\nggg --version\n```\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `ggg init` | Generate a default configuration file |\n| `ggg config` | Open the configuration file in your editor |\n| `ggg list` | List configured repositories and their clone status |\n| `ggg clone [name]` | Clone repositories (all or a specific one) |\n| `ggg pull [name]` | Pull latest changes (only if repo is clean) |\n| `ggg push [name]` | Push commits to remote for repos that are ahead |\n| `ggg status` | Show branch, dirty/clean, ahead/behind for all repos |\n| `ggg add \u003curl\u003e` | Add a repository to the configuration |\n| `ggg remove [name]` | Remove a repository from the configuration |\n| `ggg open \u003cname\u003e` | Open a repository in your editor |\n| `ggg browse \u003cname\u003e` | Open a repository's remote URL in the browser |\n| `ggg cd \u003cname\u003e` | Print a repository path for shell navigation |\n| `ggg import [org] [repo]` | Import repositories from GitHub via `gh` CLI |\n| `ggg export [path]` | Export the configuration file to a given path |\n| `ggg stash [name]` | Stash changes in dirty repositories |\n| `ggg checkout \u003cbranch\u003e` | Checkout a branch across repositories |\n| `ggg diff [name]` | Show changed files in dirty repositories |\n| `ggg doctor` | Run health checks on config and repositories |\n| `ggg outdated` | Show repositories that are behind their remote |\n| `ggg validate` | Validate config for duplicates and conflicts |\n| `ggg shell-init` | Print shell integration script (`gcd` alias and completions) |\n\nMost commands support `--group/-g` to filter by group. Data-producing commands support `--json` for machine-readable output; commands that launch an editor or browser report that JSON is unsupported.\n\n## Documentation\n\nFull documentation is available in the [`docs/`](docs/) directory:\n\n- [Configuration Reference](docs/configuration.md)\n- [Commands](docs/commands.md)\n- [Groups](docs/groups.md)\n- [Shell Integration](docs/shell-integration.md)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fillegalstudio%2Fggg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fillegalstudio%2Fggg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fillegalstudio%2Fggg/lists"}