{"id":38698302,"url":"https://github.com/kumak1/kcg","last_synced_at":"2026-01-17T10:43:49.533Z","repository":{"id":65211539,"uuid":"583182054","full_name":"kumak1/kcg","owner":"kumak1","description":"Easily and Parallel manage multiple repositories. kcg is \"kumak1 Convenient Git\" tools.","archived":false,"fork":false,"pushed_at":"2024-03-15T03:43:20.000Z","size":251,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-06-20T12:35:50.370Z","etag":null,"topics":["cli","command-line","command-line-tool","git","go","golang","homebrew"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kumak1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-29T02:24:35.000Z","updated_at":"2023-02-06T18:18:21.000Z","dependencies_parsed_at":"2024-06-20T11:51:02.076Z","dependency_job_id":"91a0fe6d-8e6b-42e9-b2f1-5048b2dd4971","html_url":"https://github.com/kumak1/kcg","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/kumak1/kcg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kumak1%2Fkcg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kumak1%2Fkcg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kumak1%2Fkcg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kumak1%2Fkcg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kumak1","download_url":"https://codeload.github.com/kumak1/kcg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kumak1%2Fkcg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28506593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","command-line","command-line-tool","git","go","golang","homebrew"],"created_at":"2026-01-17T10:43:49.447Z","updated_at":"2026-01-17T10:43:49.519Z","avatar_url":"https://github.com/kumak1.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kcg\n\n![license](https://img.shields.io/github/license/kumak1/kcg)\n[![Go Report Card](https://goreportcard.com/badge/github.com/kumak1/kcg)](https://goreportcard.com/report/github.com/kumak1/kcg)\n![build](https://img.shields.io/github/actions/workflow/status/kumak1/kcg/release.yml)\n![Go version](https://img.shields.io/github/go-mod/go-version/kumak1/kcg)\n![release](https://img.shields.io/github/v/release/kumak1/kcg)\n[![Coverage Status](https://coveralls.io/repos/github/kumak1/kcg/badge.svg)](https://coveralls.io/github/kumak1/kcg)\n![GitHub all releases](https://img.shields.io/github/downloads/kumak1/kcg/total)\n\n[日本語ドキュメント (Japanese Documents Available)](README_JA.md)\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Install](#install)\n- [Getting Started](#getting-started)\n  - [Quick Start Example](#quick-start-example)\n- [Usage](#usage)\n- [Exec command usage](#execute-specify-commands)\n  - [Example](#set-and-execute-example)\n\n## Overview\n\nIf you use multiple repositories in your application development, you may have found it tedious to `git switch main` and `git pull` for each one. `kcg` is a tool that reduces this hassle a little.\n\n#### Features\n\n- Easily manage multiple repositories\n- Narrow down the target with `filter` or `group` option.\n\n## Install\n\n#### homebrew\n\n```shell\nbrew tap kumak1/homebrew-ktools \nbrew install kcg\n```\n\n#### go\n\n```shell\ngo get github.com/kumak1/kcg@latest\n```\n\n## Getting Started\n\ndefault configuration file place is `~/.kcg` .\n\n| command                                                   | description                                                                                              |\n|:----------------------------------------------------------|:---------------------------------------------------------------------------------------------------------|\n| `kcg configure init`                                      | Generate configuration file (if not file exists)                                                         |\n| `kcg configure import --ghq`                              | Add setting managed by [ghq](https://github.com/x-motemen/ghq)                                           |\n| `kcg configure import --path=\"path/to/config\"`            | Import settings from specified file into configure file ( `~/.kcg` )                                     |\n| `kcg configure import --url=\"url/to/config\"`              | Import settings from specified url file into configure file ( `~/.kcg` )                                 |\n| `kcg configure set \u003cname\u003e --repo=\"git@host:org/repo.git\"` | Set repository setting (required)                                                                        |\n| `kcg configure set \u003cname\u003e --path=\"path/to/repo\"`          | Set repository save path setting（required. [ghq](https://github.com/x-motemen/ghq) user is not required） |\n| `kcg configure set \u003cname\u003e --group=\"group_a\"`              | Set group setting                                                                                        | \n| `kcg configure add \u003cname\u003e --group=\"group_a\"`              | Add group setting                                                                                        | \n| `kcg configure set \u003cname\u003e --branch-alias=\"main:master\"`   | Set branch alias setting. \u003cbr\u003e example: `main` to `master`                                               |\n| `kcg configure add \u003cname\u003e --branch-alias=\"main:master\"`   | Add branch alias setting. \u003cbr\u003e example: `main` to `master`                                               |\n| `kcg configure delete \u003cname\u003e`                             | Delete repository setting                                                                                |\n\n#### Quick Start Example\n\n```shell\nkcg configure init\nkcg configure set kumak1/kcg \\\n  --repo=\"git@github.com:kumak1/kcg.git\" \\\n  --path=\"~/src/github.com/kumak1/kcg/\"\n```\n\nif you using [ghq](https://github.com/x-motemen/ghq)\n\n```shell\nkcg configure import --ghq\n```\n\n#### Share config file Example\n\n##### sender\n\n```shell\nkcg configure export --filter=\"kcg\" | gh gist create --public\n```\n\n##### receiver\n\n```shell\nkcg configure import --url=\"gist_raw_file_url\"\n```\n\n## Usage\n\n| command                    | description                                                    |\n|:---------------------------|:---------------------------------------------------------------|\n| `kcg ls`                   | Show repository data in configuration file.                    |\n| `kcg cleanup`              | Delete merged branch on each repository in configuration file. |\n| `kcg clone`                | Run `git clone` on each repository in configure file.          |\n| `kcg pull`                 | Run `git pull` on each repository in configure file.           |\n| `kcg switch \u003cbranch_name\u003e` | Run `git switch` on each repository in configure file.         |\n\nCan use narrow down repository option. `--filter=\"needle\"` `--group=\"group_name\"`\n\n## Execute Specify Commands\n\n| command                                              | description                      |\n|:-----------------------------------------------------|:---------------------------------|\n| `kcg exec list`                                      | Show registered exec commands.   |\n| `kcg exec set \u003cname\u003e -n \"command_name\" -c \"command\"` | Register exec commands.          |\n| `kcg exec \u003ccommand_name\u003e`                            | Execute registered commands.     |\n\nCan use narrow down repository option. `--filter=\"needle\"` `--group=\"group_name\"`\n\n### Set and Execute Example\n\n```shell\n% kcg exec set kumak1/kcg --name=\"test\" --command=\"go test -race -covermode atomic --coverprofile=coverage.out ./...\"\n\n% kcg exec list\ntest:\n  kumak1/kcg\n\n% kcg exec test\n✔ kumak1/kcg\nrun go test -race -covermode atomic --coverprofile=coverage.out ./...\n?   \tgithub.com/kumak1/kcg\t[no test files]\n?   \tgithub.com/kumak1/kcg/cmd\t[no test files]\nok  \tgithub.com/kumak1/kcg/exec\t1.410s\tcoverage: 100.0% of statements\nok  \tgithub.com/kumak1/kcg/exec/ghq\t0.961s\tcoverage: 100.0% of statements\nok  \tgithub.com/kumak1/kcg/exec/git\t0.573s\tcoverage: 100.0% of statements\nok  \tgithub.com/kumak1/kcg/kcg\t1.081s\tcoverage: 100.0% of statements\n```\n\n#### Command Details\n\n```shell\n% kcg -h\nThis is git command wrapper CLI.\n\nUsage:\n  kcg [command]\n\nAvailable Commands:\n  cleanup     delete merged branch on each repository dir\n  clone       run `git clone` each repository\n  completion  Generate the autocompletion script for the specified shell\n  configure   Operate config file\n  exec        Run commands on each repository\n  help        Help about any command\n  ls          Show repository list.\n  pull        run `git pull` on each repository dir\n  switch      run `git switch` on each repository dir\n\nFlags:\n      --config string   config file (default is $HOME/.kcg)\n  -h, --help            help for kcg\n  -v, --version         version for kcg\n\nUse \"kcg [command] --help\" for more information about a command.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkumak1%2Fkcg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkumak1%2Fkcg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkumak1%2Fkcg/lists"}