{"id":15704926,"url":"https://github.com/mte90/gitapper","last_synced_at":"2025-06-14T23:37:08.286Z","repository":{"id":47166171,"uuid":"303786394","full_name":"Mte90/gitapper","owner":"Mte90","description":"Remap Git with your custom scripts or new commands","archived":false,"fork":false,"pushed_at":"2023-09-07T14:43:23.000Z","size":4923,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-09T01:42:01.090Z","etag":null,"topics":["alias","bash","git","hacktoberfest","wrapper"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mte90.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":"2020-10-13T17:52:40.000Z","updated_at":"2024-12-09T02:14:39.000Z","dependencies_parsed_at":"2024-10-24T06:58:42.724Z","dependency_job_id":"cf1c4010-818c-44b7-98cd-c1ebde411ca1","html_url":"https://github.com/Mte90/gitapper","commit_stats":{"total_commits":62,"total_committers":4,"mean_commits":15.5,"dds":0.08064516129032262,"last_synced_commit":"2aa06775eab33b7415d42c0c5f40a6d01b04c6cc"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mte90%2Fgitapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mte90%2Fgitapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mte90%2Fgitapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mte90%2Fgitapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mte90","download_url":"https://codeload.github.com/Mte90/gitapper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243165525,"owners_count":20246721,"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":["alias","bash","git","hacktoberfest","wrapper"],"created_at":"2024-10-03T20:14:19.594Z","updated_at":"2025-06-14T23:37:08.278Z","avatar_url":"https://github.com/Mte90.png","language":"Shell","readme":"# Gitapper\n\nGit is a difficult program to master because it can do a lot of things and often everyone needs to adapt it to their daily needs, with custom aliases and scripts.\nThis tool creates a wrapper to the `git` command that will let you extend it with custom scripts ([to execute before and after the real git command](#hooks-scripts-avalaible)).\n\nThe tool is based on other projects, [the first inspiration for bash wrapper](https://gist.github.com/mmueller/7286919) and [GrumPHP for their tasks system](https://github.com/phpro/grumphp) or [hub](https://hub.github.com/) that extend `git` with a lot of stuff.\n\nIt integrates natively [Forgit](https://github.com/wfxr/forgit) for various commands in case no file or branch are defined.\n\nFor a blogpost explaination check [here](https://daniele.tech/2021/09/gitapper-or-a-way-to-extend-git-without-alias-or-custom-scripts/).\n\n## Showcase\n![Show gif here](https://github.com/Mte90/gitapper/blob/master/showcase_gitapper.gif?raw=true)\n\n## Requirements\n\n* git\n* bash\n* wget\n* [fzf](https://github.com/junegunn/fzf)\n\n### Installation\n\n```\ngit clone https://github.com/Mte90/gitapper\ncd gitapper\n# Download the bash dependencies\n./build.sh\n\n# on your .bashrc\nalias git=/your/path/where/you/downloaded/gitapper\n```\n\n### Gitapper parameters\n\n```\n--nw    (As last command) Disable gitapper and pass all the parameters to the real git\n--n    (As last command) Disable gitapper and pass -n parameter to the real git (integration with GrumPHP)\n```\n\n## Hooks\n\nThis bash script can run a specific script before and after the `git` command itself (or stop the execution of `git`).  \nIn this repository you can find various hooks with different requirements and usage on various commands.\n\n### Hooks scripts avalaible\n\n* Post-Clone\n  * Auto-change directory inside the repo directory after cloning\n  * Execute pip, npm or composer if the project use it\n* Pre-Add\n  * If no file passed, it will use the Forgit add with FZF\n* Pre-Checkout\n  * Like [hub](https://hub.github.com/), when the branch is a GitHub pull request URL it automatically create a new branch with that content\n  * Branch picker when no branch is passed will use Forgit with FZF\n* Pre-Clean\n  * If no file is passed, it will use the Forgit clean with FZF\n* Pre-Commit\n  * Validate the commit if the `-m` parameter is defined following [ConventionalCommits](https://www.conventionalcommits.org/en/v1.0.0)\n  * Add the music played from VLC, inspired from [https://github.com/mroth/git-muzak](https://github.com/mroth/git-muzak)\n* Pre-Diff\n  * If no file is passed, it will use the Forgit diff with FZF\n* Pre-Log\n  * If a file is passed, it will use the Forgit log with FZF\n* Pre-Rebase\n  * If used with interactive parameter, it will use the Forgit rebase with FZF\n* Pre-Reset\n  * If no file is passed, it will use the Forgit reset with FZF\n\n### New commands avalaible\n\n* `git commit rename` it will use amend internally\n* `git commit remove [number]` it will remove the last commit based on `[number]`\n* `git restage rename` it will update the index\n* `git rename-branch` it will use [this script](https://github.com/tj/git-extras/blob/master/bin/git-rename-branch) from Git-Extras [licensed as MIT](https://github.com/tj/git-extras/blob/master/LICENSE) using the `build.sh` script\n* `git squash [number]` it will merge all the commits based on that number starting from the latest\n* `git fork [repo]` it will download from GitHub the original repo and configure your fork origin as upstream\n\n## Autocomplete support\n\nYou can use [complete-alias](https://github.com/cykerway/complete-alias), that is a bash utility to add autocomplete to aliases, in [this way](https://github.com/Mte90/dotfiles/commit/8ace8602bb8d34f9e48cfd0220c1e3a6b3d5bee0) for the `git` command.\n\n### Why is it different from an alias?\n\nAn alias is another command to remember, it is an external command, it does not extend another one.\n\n\n### Verifying code style\n\nThis project is built with bash and Python for Linux. In order to fully approve this code's syntax use [shellcheck](https://github.com/koalaman/shellcheck) and [pylint](https://pypi.org/project/pylint/).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmte90%2Fgitapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmte90%2Fgitapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmte90%2Fgitapper/lists"}