{"id":18548050,"url":"https://github.com/khalillechelt/belly","last_synced_at":"2025-10-29T00:50:03.979Z","repository":{"id":48314833,"uuid":"139953430","full_name":"khalillechelt/belly","owner":"khalillechelt","description":"Shortcuts for common command sequences in Git.","archived":false,"fork":false,"pushed_at":"2021-08-02T04:44:32.000Z","size":538,"stargazers_count":9,"open_issues_count":14,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T11:56:50.912Z","etag":null,"topics":["developer-experience","developer-tools","dx","git","productivity","shortcuts"],"latest_commit_sha":null,"homepage":"https://github.com/kahlil/belly","language":"JavaScript","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/khalillechelt.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}},"created_at":"2018-07-06T08:05:51.000Z","updated_at":"2025-02-28T03:02:00.000Z","dependencies_parsed_at":"2022-08-24T04:22:24.418Z","dependency_job_id":null,"html_url":"https://github.com/khalillechelt/belly","commit_stats":null,"previous_names":["khalillechelt/belly"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalillechelt%2Fbelly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalillechelt%2Fbelly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalillechelt%2Fbelly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalillechelt%2Fbelly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khalillechelt","download_url":"https://codeload.github.com/khalillechelt/belly/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248114776,"owners_count":21050111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["developer-experience","developer-tools","dx","git","productivity","shortcuts"],"created_at":"2024-11-06T20:32:56.350Z","updated_at":"2025-10-29T00:50:03.882Z","avatar_url":"https://github.com/khalillechelt.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# belly\n\n\u003e Git shortcuts for common tasks.\n\n## Install\n\n```\n$ npm install --global belly\n```\n\n## Why?\n\nThere are a few things in Git that I do a lot. Some things I need in regular intervals but I always have to look up the commands. So I created this CLI tool to simplify the Git tasks I need the most.\n\n## Why Not Use Git Aliases?\n\nSure, I could have used Git aliases but I wanted to have something that I can install with npm and I didn't want to be confined to Git aliases. This way I can add some nice visual feedback on the console.\n\n## OK, So What Does It Do?\n\nI thought you'd never ask!\n\n### `belly c [\u003ccommit message\u003e]`\n\n_Stage everything, commit everything and push to origin._\n\nI do this a lot. I commit early and often in my feature branches and\nalways push it to the server. That is what `belly c` does.\n\nType `belly c` and belly will stage everything, commit it with the\ncommit message `belly auto-commit` and push it to origin.\n\nYou can specify a commit message by adding it right after the `c`.\n\nSometimes it's fine to just commit with a generic commit message.\nEspecially if it is minor work, you're the only person working on\nthe project or if you'll squash all commits in the end anyway.\n\n### `belly s [\u003cbranch-name\u003e]`\n\n_Switch to the last branch or to an existing branch or create a new branch._\n\nWhen we navigate between branches we typically either want to switch to an existing branch or\ncreate a new one and switch to that one.\n\nWhy do we need multiple commands for that?\n\n`belly s` does it all. If you don't specify a branch name it just switches to the last branch\nyou were on. If you specify a branch name of an existing branch like: `belly s branch-name`, it will switch to that. If the branch doesn't exist it will create it and switch to it.\n\n### `belly t \u003cversion.number\u003e [-d]`\n\n_Tag the current commit with a version number and push tags to the server._\n\nIn order to annotated-tag the current commit with a version number and push the tag to the server use `belly t \u003cversion-number\u003e`.\nYou can delete a tag locally and remotely in one go by adding `-d` at the end.\n\n### `belly n \u003cnew-branch-name\u003e`\n\n_Rename your local and your remote branch in one go._\n\n`belly n \u003cnew-branch-name\u003e` will rename your local branch with `-m \u003cnew-branch-name\u003e`, then delete your remote branch with `push :\u003ccurrent-branch-name\u003e` and push the new branch to the server with `push -u \u003cnew-branch-name\u003e`.\n\n### `belly q \u003ccommit-message\u003e`\n\n_Fetch origin master, rebase the current branch on to `origin/master` and if it doesn't fail, squash the branch._\n\nIf your team wants to keep a clean Git history you will most likely have to rebase your branch on a regular basis and squash your commits into one commit per feature.\n\n`belly q` is here to help! The command will rebase your current branch on to `master` just to make sure you rebased (you have to make sure your master is up-to-date). Then it will do a `reset --soft` back to `master` and then commit all your changes with the commit message you specified after `q`.\n\n### `belly p`\n\nIf you work with rebasing and squashing in feature branches a lot, you have to force-push a lot. Instead of using `push --force` it is recommended to use `push --force-with-lease`. `belly p` gives you a nice shortcut for doing a `--force-with-lease` push. Make sure you understand [the ways how `--force-with-lease` can fail you though](https://developer.atlassian.com/blog/2015/04/force-with-lease/).\n\n## Usage\n\n```\n$ [belly | b] --help\n\n  Usage\n    $ belly [c | s | t | n | q]\n\n  Options\n    --help       Display this message\n    --del or -d  Use this flag in combination with the t command to delete a tag locally and remotely\n\n  Examples\n    Commit all staged and unstaged changes with a generic\n    commit message and push the commit to origin\n    $ belly c\n\n    Commit all staged and unstaged changes with a custom\n    commit message and push the commit to origin\n    $ belly c Made some awesome changes\n\n    Switch to last branch or switch to/create a branch with a specific name\n    $ belly s [some-branch]\n\n    Tag and annotate the current commit with a version number\n    and push the tag to origin\n    $ belly t 1.4.2\n\n    Delete a tag locally and on the server\n    $ belly t 1.4.2 -d\n\n    Rename the current branch locally and on origin\n    $ belly n some-branch\n\n    Squash all commits since master\n    $ belly q Made some awesome changes\n\n    Force push with `--force-with-lease`\n    $ belly p\n\n```\n\n## Why \"belly\"?\nWhen looking for a name I started with `git-shortcuts` which was to long\nso I shortened it to `g-cuts`. Still too long. `guts` was cool but a little\ngross so `guts` became `belly`.\n\n## License\n\nMIT © [Kahlil Lechelt](https://github.com/kahlil)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhalillechelt%2Fbelly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhalillechelt%2Fbelly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhalillechelt%2Fbelly/lists"}