{"id":15975559,"url":"https://github.com/novotnyr/git-mass","last_synced_at":"2026-04-29T15:01:26.662Z","repository":{"id":145665610,"uuid":"108840418","full_name":"novotnyr/git-mass","owner":"novotnyr","description":"Executes specific git commands over a set of independent git repositories","archived":false,"fork":false,"pushed_at":"2017-12-11T13:04:11.000Z","size":14,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-19T04:50:19.044Z","etag":null,"topics":["git"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/novotnyr.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-10-30T11:17:41.000Z","updated_at":"2019-03-05T07:12:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"c2fd7d13-14da-4ffa-8575-966003c404cb","html_url":"https://github.com/novotnyr/git-mass","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":0.03448275862068961,"last_synced_commit":"0e17689c704df707a48fea1224844c94a07843fd"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/novotnyr/git-mass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novotnyr%2Fgit-mass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novotnyr%2Fgit-mass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novotnyr%2Fgit-mass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novotnyr%2Fgit-mass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/novotnyr","download_url":"https://codeload.github.com/novotnyr/git-mass/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novotnyr%2Fgit-mass/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32430803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T13:34:34.882Z","status":"ssl_error","status_checked_at":"2026-04-29T13:34:29.830Z","response_time":110,"last_error":"SSL_read: 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":["git"],"created_at":"2024-10-07T22:03:15.520Z","updated_at":"2026-04-29T15:01:26.646Z","avatar_url":"https://github.com/novotnyr.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"About\n=====\n\n`git-mass` executes specific `git` commands over a set of directories where each subdirectory is an independent Git repo.\n\nCommands\n========\n\nList Module\n-----------\n\nList all subdirectories\n\n    ./git-mass list\n    \nCheckout\n--------\n\nSwitches all subdirectories to a specific branch. Example, which switches all subdirectories to `gl-0` branch:\n\n    ./git-mass checkout gl-0   \n\nPull \u0026 Rebase\n-------------\n\nUpdates the specific subdirectory with the most-recent changes (via `pull --rebase`).\n\n    ./git-mass pull-rebase\n   \n\nFull Merge\n----------\nExecutes a merge from a specified branch to target branch. Before merging, updates the specific subdirectory with the most-recent changes (via `pull --rebase`).\n\n### Full Merge (without push)\n\n\t./git-mass full-merge -m \"GL-0 Merge 'gl-0' to 'master'\" gl-0 master\n\n### Full Merge \u0026 Push\n\n\t./git-mass full-merge -p -m \"GL-0 Merge 'gl-0' to 'master'\" gl-0 master\n\nLast Commit Date\n---------------\n\nShows last commit dates on each subdirectory\n\n    ./git-mass last-commit-date\n\nForward diff between two branches\n---------------------------------\n\nShows whether a specific branch is behind another branch, so it can be merged.\n\n    ./git-mass fwdiff dev master\n\nOutput:\n\n    ./backend/\u003e dev is behind master\n\nChanged files between branches\n------------------------------\n\nIndicates which files have been changed between branches.\n\n    ./git-mass namediff dev master\n\nInternally, the `git diff --name-only` is used.\n\nCleanup unchanged branches\n--------------------------\nRemove feature branch that has no changes against master / production\nbranch.\n\n    ./git-mass cleanup-unchanged-branches master dev\n\nSuppose that module contains 'dev' branch which has\nno changes against 'master'. In this case, it can be cleaned\nand removed.\n\nThis command is useful when removing feature branches that have\nbeen not used:\n\n    ./git-mass cleanup-unchanged-branches master gl-0\n\nHard Reset\n-----------\n\nHard-resets each subdirectory to the specific branch:\n\n    ./git-mass reset-hard origin/master","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnovotnyr%2Fgit-mass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnovotnyr%2Fgit-mass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnovotnyr%2Fgit-mass/lists"}