{"id":21146346,"url":"https://github.com/bhallstein/gitkit","last_synced_at":"2026-07-17T07:37:46.103Z","repository":{"id":143863464,"uuid":"138027652","full_name":"bhallstein/gitkit","owner":"bhallstein","description":"Faster, leaner git aliases for the everyday gitster.","archived":false,"fork":false,"pushed_at":"2024-01-12T16:22:17.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-24T11:03:12.111Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/bhallstein.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":"2018-06-20T12:06:40.000Z","updated_at":"2024-01-12T16:22:21.000Z","dependencies_parsed_at":"2024-01-12T21:45:35.195Z","dependency_job_id":"d7fcb380-5b79-48e8-9d8f-7389e99c6cba","html_url":"https://github.com/bhallstein/gitkit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bhallstein/gitkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhallstein%2Fgitkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhallstein%2Fgitkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhallstein%2Fgitkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhallstein%2Fgitkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bhallstein","download_url":"https://codeload.github.com/bhallstein/gitkit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhallstein%2Fgitkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35573734,"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-07-17T02:00:06.162Z","response_time":116,"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":[],"created_at":"2024-11-20T08:52:38.907Z","updated_at":"2026-07-17T07:37:46.059Z","avatar_url":"https://github.com/bhallstein.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gitkit ⚡️\n\ngitkit is a small ’n simple set of git bash aliases \u0026 functions, to help ease the pain of git's rather [verbose command line interface](http://stevelosh.com/blog/2013/04/git-koans/), to let you fly around in git like a bat on steroids. 🦇\n\n\n## Contents\n\n- [Installation](#installation)\n- [Commands](#commands)\n\n\n## Installation\n\n```bash\nbash install.sh\n```\n\nOr for unattended install:\n\n```bash\nbash install.sh ~/.profile   # Specify your bash profile file path up-front\n```\n\n\n## Commands\n\n### gts: git status\n\n```bash\n$ gts\nOn branch master\nYour branch is up to date with 'origin/master'.\n\n$ gts src\nOn branch integration\nYour branch is up to date with 'origin/integration'.\n\nChanges not staged for commit:\n  (use \"git add \u003cfile\u003e...\" to update what will be committed)\n  (use \"git checkout -- \u003cfile\u003e...\" to discard changes in working directory)\n\n  modified:   main.c\n```\n\n### gch: git checkout\n\n```bash\n$ gch my-branch\nSwitched to branch 'my-branch'\n```\n\n```bash\n$ gch .            # Discard all unstaged changes since parent commit\n$ gch -- index.js  # Discard changes to index.js since parent commit\n```\n\n`gch` has two variants for common branch names `integration` and `master`:\n\n```bash\n$ gchi\nSwitched to branch 'integration'\n````\n\n```bash\n$ gchm\nSwitched to branch 'master'\n````\n\n\n### gf \u0026 gtp — git fetch \u0026 git pull\n\nYou almost always want the options `--all --prune`, so that's what gf does.\n\nNote: for safety, you should usually `gf` and `gts` before you `gtp`.\n\n```bash\n$ gf\nFetching origin...\nFrom github.com:\u003cx\u003e\n   c7982c0d3..c3dbd0648  integration -\u003e origin/integration\n * [new branch]          my-branch   -\u003e origin/my-branch\n```\n\n```bash\n$ gtp\nUpdating c7982c0d3..c3dbd0648\nFast-forward\n src/blog.js                    |  3 ++-\n src/header.js                  | 12 ++++++++++++------\n```\n\n\n### gtl: git diff\n\n```\n$ gtl\n--- a/src/index.js\n+++ b/src/index.js\n@@ -2,3 +2,4 @@\n\n+import './math';\n```\n\n`gtl` has variants for showing only cached changes (`git diff --cached`):\n\n```bash\n$ gtlc\ndiff --git a/index.js b/index.js\nindex 348ab52..d528d10 100644\n--- a/index.js\n+++ b/index.js\n@@ -20,6 +20,13 @@\n-  const animation_speed = 10;\n+  const animation_speed = 20;\n```\n\nAnd file status changes: (`git diff --name-status`):\n\n```bash\n$ gtln\nD   assets/settings.svg\nM   index.js\n```\n\n\n### gh: diff an specified commit with its parent\n\n```bash\n$ gh c1bf9dff9\n--- a/alphabet.js\n+++ b/alphabet.js\n@@ -137,3 +137,16 @@\n  function b() {\n-    return 'c';\n+    return 'b';\n  }\n```\n\nWhen called with no argument, `gh` diffs HEAD with HEAD^.\n\n\n### gad \u0026 gcom — git add \u0026 git commit\n\n`gad` adds everything under the current directory, and uses `-u` to include file deletions. It calls `gts` afterwards, to show you what you've got staged.\n\n```bash\n$ gad\nOn branch integration\nYour branch is up to date with 'origin/integration'.\n\nChanges to be committed:\n  (use \"git reset HEAD \u003cfile\u003e...\" to unstage)\n\n  modified:   index.js\n```\n\n`gadn` includes `-N` and adds new files to the index but doesn't stage them:\n\n```bash\n$ touch file.js\n$ gadn\nOn branch integration\nYour branch is up to date with 'origin/integration'.\n\nChanges not staged for commit:\n  (use \"git add \u003cfile\u003e...\" to update what will be committed)\n  (use \"git checkout -- \u003cfile\u003e...\" to discard changes in working directory)\n\n  new file:   file.js\n```\n\n`gcom` takes the commit message as the full string of its arguments:\n\n```bash\n$ gcom add a new file\n[integration 34df9305d] add a new file\n 1 file changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 x.js\n```\n\nMake sure to use quotes if your commit message includes special characters like `\u0026`:\n\n```bash\n$ gcom 'add new.js \u0026 delete old.js'\n```\n\n\n### gm — git merge\n\n`gm` includes `--no-ff --no-commit`.\n\nYou should always merge in two stages: `gm`, then `gcom`.\n\n```bash\n$ gchi\nSwitched to branch 'integration'\nYour branch is up to date with 'origin/integration'.\n\n$ gm text-util-update\nAutomatic merge went well; stopped before committing as requested\n\n$ gts\nOn branch integration\nYour branch is up to date with 'origin/integration'.\n\nAll conflicts fixed but you are still merging.\n  (use \"git commit\" to conclude merge)\n\nChanges to be committed:\n\n  modified:   classes/utils/text.php\n\n$ gcom merge branch text-util-update\n[integration 311d38891] merge branch text-util-update\n\n👍\n```\n\n\n### gb — git branch --all\n\nList all branches.\n```bash\n$ gb\n$ gb | grep hotfix\n```\n\n\n### gD — git branch -D\n\nDelete branches. The D is capitalised to avoid accidental usage.\n\n```bash\n$ gD my-branch\nDeleted branch my-branch (was c3dbd0648).\n```\n\n`gDmerged` is a variant to delete all local branches that are merged from the point of view of HEAD:\n\n```bash\n$ gDmerged\nDeleted branch my-branch (was c7982c0d3).\n```\n\n...and `gDall` deletes **all unmerged** local branches (you could hurt yourself with this, but it will skip unmerged branches without remotes, so probably not too badly):\n\n```bash\n$ gDall\nDeleted branch a-feature (was 0ca561f41).\nerror: The branch 'another-feature' is not fully merged.\nIf you are sure you want to delete it, run 'git branch -D another-feature'.\n```\n\n\n### gbm — git branch -m\n\nRename the current branch.\n\n```bash\n$ gch temp-branch\n$ gbm my-feature\n```\n\n\n### gtt — fancy git log\n\n`gtt` displays ‘traintracks view’:\n\n```bash\n$ gtt\n* c3dbd0648 (HEAD -\u003e integration, origin/integration) prod build\n* aa795e9d1 WBT-2287: add natural height opt to cd hero\n* db259e9d0 Noindex all blog archives except author\n| * 1fb6c8b11 (temp-text-helper-improvements) helper func improvements: initial work\n| | * cb94cc365 (origin/custom-cta) new custom button text field\n| | * c6e7bd2b2 enable custom text on ctas\n| |/\n|/|\n* | 12aab6354 only output images if required data is present\n|/\n* c7982c0d3 minor routing fix\n*\n...\n```\n\n`gtts` (for ‘single’) is a variant that only includes the history that has been merged into HEAD.\n\n\n### gpoh — git push origin HEAD\n\nThe fastest way to push.\n\n```bash\n$ gpoh\nCounting objects: 2, done.\n...\nTo github.com:bhallstein/gitkit.git\n   c3dbd0648..b8b86da89  HEAD -\u003e my-branch\n```\n\n`gpohu` is a variant that sets the upstream tracking reference. It's often a good idea to use `gpohu` when pushing a newly created branch:\n\n```bash\n$ gch -b my-branch\nSwitched to a new branch 'my-branch'\n\n$ gpohu\nTo github.com:bhallstein/gitkit.git\n * [new branch]          HEAD -\u003e my-branch\nBranch 'my-branch' set up to track remote branch 'my-branch' from 'origin'.\n```\n\n\n### gr, gri, grc — git rebase\n\nFor the rebaser.\n\n`gr \u003ca\u003e \u003cb\u003e \u003cc\u003e` rebases commits ranging [b to c] onto a. (`git rebase --onto a b c`).\n\n`gri \u003ca\u003e \u003cb\u003e \u003cc\u003e` as `gr`, but with --interactive\n\n```bash\n$ gr origin/utils c3dbd0648 text-utils\nFirst, rewinding head to replay your work on top of it...\nApplying: initial work\n...\n```\n\n`grc` calls `git rebase --continue`, for when you have finished fixing conflicts during a rebase.\n\n\n### gcl — git clean -fd\n\nRemoves untracked files. (Note: you could lose work if you meant to `gcom` those files!)\n\n```\n$ touch my-file\n$ gcl\nRemoving my-file\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhallstein%2Fgitkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbhallstein%2Fgitkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhallstein%2Fgitkit/lists"}