{"id":351,"url":"https://github.com/stevemao/awesome-git-addons","last_synced_at":"2025-10-01T03:30:28.874Z","repository":{"id":36832177,"uuid":"41139077","full_name":"stevemao/awesome-git-addons","owner":"stevemao","description":":sunglasses: A curated list of add-ons that extend/enhance the git CLI.","archived":false,"fork":false,"pushed_at":"2023-10-27T00:43:43.000Z","size":188,"stargazers_count":1877,"open_issues_count":5,"forks_count":112,"subscribers_count":56,"default_branch":"master","last_synced_at":"2024-05-21T13:14:38.942Z","etag":null,"topics":["add-on","add-ons","addon","addons","awesome","awesome-list","cli","git","hacktoberfest","list","lists","resources"],"latest_commit_sha":null,"homepage":"","language":null,"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/stevemao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2015-08-21T06:25:30.000Z","updated_at":"2024-05-20T19:48:31.000Z","dependencies_parsed_at":"2023-01-17T05:27:34.775Z","dependency_job_id":"a528030e-af82-459c-8e54-66ee3ac1535d","html_url":"https://github.com/stevemao/awesome-git-addons","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevemao%2Fawesome-git-addons","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevemao%2Fawesome-git-addons/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevemao%2Fawesome-git-addons/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevemao%2Fawesome-git-addons/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stevemao","download_url":"https://codeload.github.com/stevemao/awesome-git-addons/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234817668,"owners_count":18891450,"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":["add-on","add-ons","addon","addons","awesome","awesome-list","cli","git","hacktoberfest","list","lists","resources"],"created_at":"2024-01-05T20:12:52.627Z","updated_at":"2025-10-01T03:30:23.816Z","avatar_url":"https://github.com/stevemao.png","language":null,"readme":"# Awesome git addons [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\nA curated list of add-ons that extend/enhance the git CLI.\n\n```\n$ git bla\nSomething awesome happens!\n```\n\n\u003e _“You don’t have to know everything. You simply need to know where to find it when necessary.” (John Brunner)_\n\nInspired by the [awesome](https://github.com/sindresorhus/awesome) list thing.\n\n**Note**: Certain commands may not function immediately after installation. You may need to run a post-install script or manually configure aliases for them to work correctly.\n\n\n## Table of Contents\n\n- [Git Extras](#git-extras)\n- [Git Flow](#gitflow-avh-edition)\n- [Git Up](#git-up)\n- [Hub](#hub)\n- [Git Deploy](#git-deploy)\n- [Git Cal](#git-cal)\n- [Git Hooks](#git-hooks)\n- [Git Imerge](#git-imerge)\n- [Git Issue](#git-issue)\n- [Git Large File Storage](#git-lfs)\n- [Git Now](#git-now)\n- [Git Plus](#git-plus)\n- [Git Test](#git-test)\n- [Legit](#legit)\n- [Git When Merged](#git-when-merged)\n- [Git Playback](#git-playback)\n- [Git Branch Status](#git-branch-status)\n- [Git Open](#git-open)\n- [Git My](#git-my)\n- [Git Ink](#git-ink)\n- [Recursive Blame](#recursive-blame)\n- [Git Hyper Blame](#hyper-blame)\n- [Git Word Blame](#git-word-blame)\n- [Git Fire](#git-fire)\n- [Git Town](#git-town)\n- [Git blame-someone-else](#git-blame-someone-else)\n- [Diff So Fancy](#diff-so-fancy)\n- [Git Stats](#git-stats)\n- [Git Secret](#git-secret)\n- [Git Secrets](#git-secrets)\n- [git-fixup](#git-fixup)\n- [git-recent](#git-recent)\n- [git-interactive-rebase-tool](#git-interactive-rebase-tool)\n- [git-fiddle](#git-fiddle)\n- [git-user](#git-user)\n- [gitsome](#gitsome)\n- [Git Hound](#git-hound)\n- [git-recall](#git-recall)\n- [git-standup](#git-standup)\n- [Commitizen](#commitizen)\n- [git-fresh](#git-fresh)\n- [git-fs](#git-fs)\n- [Git Url](#git-url)\n- [Git Signatures](#git-signatures)\n- [Git Profile](#git-profile)\n- [git revise](#git-revise)\n- [filter-repo](#filter-repo)\n- [git-jump](#git-jump)\n- [git-project](#git-project)\n- [git-branchcut](#git-branchcut)\n- [git-exfiltrate](#git-exfiltrate)\n- [git-spend](#git-spend)\n\n\n## [git-extras](https://github.com/tj/git-extras)\n\n### squash\n\n```\n$ git squash fixed-cursor-styling \"Fixed cursor styling\"\n$ git squash 95b7c52\n$ git squash HEAD~3\n```\n\n### summary\n\n```\n$ git summary\n\n project  : git\n repo age : 10 years\n active   : 11868 days\n commits  : 40530\n files    : 2825\n authors  :\n 15401\tJunio C Hamano                  38.0%\n  1844\tJeff King                       4.5%\n```\n\n### line-summary\n\n```\n$ git line-summary\n\n project  : gulp\n lines    : 3900\n authors  :\n 1040 Contra                    26.7%\n  828 Sindre Sorhus             21.2%\n```\n\n### effort\n\n```\n$ git effort\n\n  file                                          commits    active days\n\n  .gitattributes............................... 3          3\n  .gitignore................................... 265        226\n  .mailmap..................................... 47         40\n```\n\n### authors\n\n```\n$ git authors\nContra \u003ccontra@maricopa.edu\u003e\nEric Schoffstall \u003ccontra@wearefractal.com\u003e\nSindre Sorhus \u003csindresorhus@gmail.com\u003e\n```\n\n### changelog\n\n```\n$ git changelog\n## 3.9.0\n\n- add babel support\n- add transpiler fallback support\n- add support for some renamed transpilers (livescript, etc)\n- add JSCS\n- update dependecies (liftoff, interpret)\n- documentation tweaks\n\n## 3.8.11\n\n- fix node 0.12/iojs problems\n- add node 0.12 and iojs to travis\n- update dependencies (liftoff, v8flags)\n- documentation tweaks\n```\n\n### commits-since\n\n```\n$ git commits-since yesterday\n... changes since yesterday\nTJ Holowaychuk - Fixed readme\n```\n\n### count\n\n```\n$ git count\ntotal 855\n```\n\n### create-branch\n\n```\n$ git create-branch development\nTotal 3 (delta 0), reused 0 (delta 0)\nTo https://github.com/tj/git-extras.git\n * [new branch]      HEAD -\u003e development\nBranch development set up to track remote branch development from origin.\nSwitched to a new branch 'development'\n```\n\n### delete-branch\n\n```\n$ git delete-branch integration\nDeleted branch integration (was bfb8522).\nDeleted remote-tracking branch remote/integration (was bfb8522).\nTo git@github.com:remote/gulp.git\n - [deleted]         integration\n```\n\n### delete-submodule\n\n```\n$ git delete-submodule lib/foo\n```\n\n### delete-tag\n\n```\n$ git delete-tag v0.1.1\nDeleted tag 'v0.1.1' (was 9fde751)\nTo https://github.com/tj/git-extras.git\n - [deleted]         v0.1.1\n```\n\n### delete-merged-branches\n\n```\n$ git delete-merged-branches\nDeleted feature/themes (was c029ab3).\nDeleted feature/live_preview (was a81b002).\nDeleted feature/dashboard (was 923befa).\n```\n\n### fresh-branch\n\n```\n$ git fresh-branch docs\nRemoving .DS_Store\nRemoving .editorconfig\nRemoving .gitignore\n```\n\n### guilt\n\n```\n$ git guilt `git log --until=\"3 weeks ago\" --format=\"%H\" -n 1` HEAD\nPaul Schreiber                +++++++++++++++++++++++++++++++++++++++++++++(349)\nspacewander                   +++++++++++++++++++++++++++++++++++++++++++++(113)\nMark Eissler                  ++++++++++++++++++++++++++\n```\n\n### merge-into\n\n```\n$ git merge-into master\nSwitched to branch 'master'\nYour branch is up-to-date with 'origin/master'.\nUpdating 9fde751..e62edfa\nFast-forward\n 234 | 0\n 1 file changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 234\nSwitched to branch 'development'\n```\n\n### graft\n\n```\n$ git graft development\nYour branch is up-to-date with 'origin/master'.\nMerge made by the 'recursive' strategy.\n package.json | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\nDeleted branch development (was 64b3563).\n```\n\n### alias\n\n```\n$ git alias last \"cat-file commit HEAD\"\n$ git alias\nlast = cat-file commit HEAD\n```\n\n### ignore\n\n```\n$ git ignore build \"*.o\" \"*.log\"\n... added 'build'\n... added '*.o'\n... added '*.log'\n```\n\n### info\n\n```\n$ git info\n\n    ## Remote URLs:\n\n    origin              git@github.com:sampleAuthor/git-extras.git (fetch)\n    origin              git@github.com:sampleAuthor/git-extras.git (push)\n\n    ## Remote Branches:\n\n    origin/HEAD -\u003e origin/master\n    origin/myBranch\n\n    ## Local Branches:\n\n    myBranch\n    * master\n\n    ## Most Recent Commit:\n\n    commit e3952df2c172c6f3eb533d8d0b1a6c77250769a7\n    Author: Sample Author \u003csampleAuthor@gmail.com\u003e\n\n    Added git-info command.\n\n    Type 'git log' for more commits, or 'git show \u003ccommit id\u003e' for full commit details.\n\n    ## Configuration (.git/config):\n\n    color.diff=auto\n    color.status=auto\n```\n\n### fork\n\n```\n$ git fork LearnBoost/expect.js\n```\n\n### release\n\n```\n$ git release 0.1.0\n... releasing 0.1.0\nOn branch development\nYour branch is up-to-date with 'origin/development'.\nnothing to commit, working directory clean\nTotal 0 (delta 0), reused 0 (delta 0)\nTo https://github.com/tj/git-extras.git\n   9fde751..e62edfa  master -\u003e master\nCounting objects: 1, done.\nWriting objects: 100% (1/1), 166 bytes | 0 bytes/s, done.\nTotal 1 (delta 0), reused 0 (delta 0)\nTo https://github.com/tj/git-extras.git\n * [new tag]         0.1.0 -\u003e 0.1.0\n... complete\n```\n\n### contrib\n\n```\n$ git contrib visionmedia\nvisionmedia (18):\n  Export STATUS_CODES\n  Replaced several Array.prototype.slice.call() calls with Array.prototype.unshift.call()\n  Moved help msg to node-repl\n```\n\n### repl\n\n```\n$ git repl\n\ngit\u003e ls-files\nHistory.md\nMakefile\n```\n\n### undo\n\n```\n$ git undo\nUnstaged changes after reset:\nM\tpackage.json\nM\treadme.md\n```\n\n### gh-pages\n\n```\n$ git gh-pages\n```\n\n### scp\n\n```\n$ git scp staging HEAD\n```\n\n### setup\n\n```\n$ git setup\nInitialized empty Git repository in /GitHub/test/gulp/.git/\n[master (root-commit) 9469797] Initial commit\n 69 files changed, 3900 insertions(+)\n create mode 100644 .editorconfig\n create mode 100644 .gitignore\n create mode 100644 .jscsrc\n```\n\n### touch\n\n```\n$ git touch index.js\n```\n\n### obliterate\n\n```\n$ git obliterate secrets.json\nRewrite 2357a4334051a6d1733037406ab7538255030d0b (1/981)rm 'secrets.json'\nRewrite b5f62b2746c23150917d346bd0c50c467f01eb03 (2/981)rm 'secrets.json'\nRewrite 3cd94f3395c2701848f6ff626a0a4f883d8a8433 (3/981)rm 'secrets.json'\n```\n\n### feature|refactor|bug|chore\n\n```\n$ git feature dependencies\n$ git feature finish dependencies\nAlready up-to-date.\nDeleted branch feature/dependencies (was f0fc4c7).\nDeleted remote-tracking branch origin/feature/dependencies (was f0fc4c7).\nTo git@github.com:stevemao/gulp.git\n - [deleted]         feature/dependencies\n```\n\n### local-commits\n\n```\n$ git local-commits\ncommit 5f00a3c1bb71876ebdca059fac96b7185dea5467\nMerge: 7ad3ef9 841af4e\nAuthor: Blaine Bublitz \u003cblaine@iceddev.com\u003e\nDate:   Thu Aug 20 11:35:15 2015 -0700\n\n    Merge pull request #1211 from JimiHFord/patch-1\n\n    Update guidelines.md\n\ncommit 841af4ee7aaf55b505354d0e86d7fb876d745e26\nAuthor: Jimi Ford \u003cJimiHFord@users.noreply.github.com\u003e\nDate:   Thu Aug 20 11:55:38 2015 -0400\n\n    Update guidelines.md\n\n    fixed typo\n```\n\n### archive-file\n\n```\n$ git archive-file\nBuilding archive on branch \"master\"\nSaved to \"gulp.v3.9.0-36-g47cb6b0.zip\" ( 60K)\n```\n\n### missing\n\n```\n$ git missing master\n\u003c d14b8f0 only on current checked out branch\n\u003e 97ef387 only on master\n```\n\n### lock\n\n```\n$ git lock config/database.yml\n```\n\n### locked\n\n```\n$ git locked\nconfig/database.yml\n```\n\n### unlock\n\n```\n$ git unlock config/database.yml\n```\n\n### reset-file\n\n```\n$ git reset-file README.md HEAD^\nReset 'README.md' to HEAD^\n```\n\n### pr\n\n```\n$ git pr 226\nFrom https://github.com/tj/git-extras\n * [new ref]       refs/pulls/226/head -\u003e pr/226\nSwitched to branch 'pr/226'\n```\n\n### root\n\n```\n$ git root\n/GitHub/git\n```\n\n### delta\n\n```\n$ git delta\nREADME.md\n```\n\n### merge-repo\n\n```\n$ git merge-repo git@github.com:tj/git-extras.git master .\ngit fetch git@github.com:tj/git-extras.git master\nwarning: no common commits\nremote: Counting objects: 3507, done.\nremote: Compressing objects: 100% (5/5), done.\nremote: Total 3507 (delta 1), reused 0 (delta 0), pack-reused 3502\nReceiving objects: 100% (3507/3507), 821.12 KiB | 286.00 KiB/s, done.\nResolving deltas: 100% (1986/1986), done.\nFrom github.com:tj/git-extras\n * branch            master     -\u003e FETCH_HEAD\nAdded dir 'git-merge-repo.E95m0gj'\nNo local changes to save\n```\n\n### psykorebase\n\n```\n$ git psykorebase master\n$ git psykorebase --continue\n$ git psykorebase master feature\n```\n\n\n## [gitflow (AVH Edition)](https://github.com/petervanderdoes/gitflow-avh)\n\n### flow init\n\n```\n$ git flow init\n\nWhich branch should be used for bringing forth production releases?\n   - changelog\n   - master\nBranch name for production releases: [master]\n\nWhich branch should be used for integration of the \"next release\"?\n   - changelog\nBranch name for \"next release\" development: [master]\nProduction and integration branches should differ.\n```\n\n### flow feature\n\n```\n$ git flow feature\n$ git flow feature start awesome-feature\n$ git flow feature finish awesome-feature\n$ git flow feature delete awesome-feature\n\n$ git flow feature publish awesome-feature\n$ git flow feature pull remote awesome-feature\n```\n\n### flow release\n\n```\n$ git flow release\n$ git flow release start awesome-release\n$ git flow release finish awesome-release\n$ git flow release delete awesome-release\n```\n\n### flow hotfix\n\n```\n$ git flow hotfix\n$ git flow hotfix start awesome-release\n$ git flow hotfix finish awesome-release\n$ git flow hotfix delete awesome-release\n```\n\n### flow support\n\n```\n$ git flow support\n```\n\n\n## [git-up](https://github.com/aanand/git-up)\n\n```\n$ git up\nFetching origin\n4.0       fast-forwarding...\nchangelog ahead of upstream\nmaster    fast-forwarding...\nreturning to 4.0\n```\n\n\n## [hub](https://github.com/github/hub)\n\n### clone\n\n```\n$ git clone schacon/ticgit\n\u003e git clone git://github.com/schacon/ticgit.git\n\n$ git clone -p schacon/ticgit\n\u003e git clone git@github.com:schacon/ticgit.git\n\n$ git clone resque\n\u003e git clone git@github.com/YOUR_USER/resque.git\n```\n\n### remote add\n\n```\n$ git remote add rtomayko\n\u003e git remote add rtomayko git://github.com/rtomayko/CURRENT_REPO.git\n\n$ git remote add -p rtomayko\n\u003e git remote add rtomayko git@github.com:rtomayko/CURRENT_REPO.git\n\n$ git remote add origin\n\u003e git remote add origin git://github.com/YOUR_USER/CURRENT_REPO.git\n```\n\n### fetch\n\n```\n$ git fetch mislav\n\u003e git remote add mislav git://github.com/mislav/REPO.git\n\u003e git fetch mislav\n\n$ git fetch mislav,xoebus\n\u003e git remote add mislav ...\n\u003e git remote add xoebus ...\n\u003e git fetch --multiple mislav xoebus\n```\n\n### cherry-pick\n\n```\n$ git cherry-pick https://github.com/mislav/REPO/commit/SHA\n\u003e git remote add -f --no-tags mislav git://github.com/mislav/REPO.git\n\u003e git cherry-pick SHA\n\n$ git cherry-pick mislav@SHA\n\u003e git remote add -f --no-tags mislav git://github.com/mislav/CURRENT_REPO.git\n\u003e git cherry-pick SHA\n\n$ git cherry-pick mislav@SHA\n\u003e git fetch mislav\n\u003e git cherry-pick SHA\n```\n\n### am\n\n```\n$ git am https://github.com/github/hub/pull/55\n[ downloads patch via API ]\n\u003e git am /tmp/55.patch\n\n$ git am --ignore-whitespace https://github.com/davidbalbert/hub/commit/fdb9921\n[ downloads patch via API ]\n\u003e git am --ignore-whitespace /tmp/fdb9921.patch\n```\n\n### apply\n\n```\n$ git apply https://gist.github.com/8da7fb575debd88c54cf\n[ downloads patch via API ]\n\u003e git apply /tmp/gist-8da7fb575debd88c54cf.txt\n```\n\n### fork\n\n```\n$ git fork\n[ repo forked on GitHub ]\n\u003e git remote add -f YOUR_USER git@github.com:YOUR_USER/CURRENT_REPO.git\n```\n\n### pull-request\n\n```\n$ git pull-request\n[ opens text editor to edit title \u0026 body for the request ]\n[ opened pull request on GitHub for \"YOUR_USER:feature\" ]\n```\n\n### checkout\n\n```\n$ git checkout https://github.com/github/hub/pull/73\n\u003e git remote add -f --no-tags -t feature mislav git://github.com/mislav/hub.git\n\u003e git checkout --track -B mislav-feature mislav/feature\n```\n\n### merge\n\n```\n$ git merge https://github.com/github/hub/pull/73\n\u003e git fetch git://github.com/mislav/hub.git +refs/heads/feature:refs/remotes/mislav/feature\n\u003e git merge mislav/feature --no-ff -m 'Merge pull request #73 from mislav/feature...'\n```\n\n### create\n\n```\n$ git create\n[ repo created on GitHub ]\n\u003e git remote add origin git@github.com:YOUR_USER/CURRENT_REPO.git\n```\n\n### init\n\n```\n$ git init -g\n\u003e git init\n\u003e git remote add origin git@github.com:YOUR_USER/REPO.git\n```\n\n### push\n\n```\n$ git push origin,staging,qa bert_timeout\n\u003e git push origin bert_timeout\n\u003e git push staging bert_timeout\n\u003e git push qa bert_timeout\n```\n\n### browse\n\n```\n$ git browse\n\u003e open https://github.com/YOUR_USER/CURRENT_REPO\n```\n\n### compare\n\n```\n$ git compare refactor\n\u003e open https://github.com/CURRENT_REPO/compare/refactor\n```\n\n### submodule\n\n```\n$ git submodule add wycats/bundler vendor/bundler\n\u003e git submodule add git://github.com/wycats/bundler.git vendor/bundler\n```\n\n### ci-status\n\n```\n$ git ci-status\nsuccess\n```\n\n\n## [git-deploy](https://github.com/mislav/git-deploy)\n\n```\n$ git remote add production \"user@example.com:/apps/mynewapp\"\n$ git deploy setup -r \"production\"\n$ git deploy init\n$ git push production master\n```\n\n\n## [git-cal](https://github.com/k4rthik/git-cal)\n\n![68747470733a2f2f7261772e6769746875622e636f6d2f6b34727468696b2f6769742d63616c2f6d61737465722f73637265656e73686f74732f696d67322e706e67](https://cloud.githubusercontent.com/assets/6316590/12465623/17d828ea-c023-11e5-8077-2e9a284defd6.png)\n\n\n## [git-hooks](https://github.com/git-hooks/git-hooks)\n\n```\n$ git hooks --install\n$ git hooks\nGit hooks ARE installed in this repository.\n\nListing User, Project, and Global hooks:\n---\n/Users/stevemao/.git_hooks:\n\n/GitHub/git-hooks/git_hooks:\ncommit-msg/signed-off-by \t- Checks commit message for presence of Signed-off-by line.\npre-commit/bsd \t- Check for the BSD license.\n\n/GitHub/git-hooks/.githooks:\n```\n\n\n## [git-imerge](https://github.com/mhagger/git-imerge)\n\n### imerge start\n\n```\n$ git imerge start --name=next --goal=merge --first-parent 4.0\nAttempting automerge of 1-1...success.\nAttempting automerge of 1-29...success.\nAttempting automerge of 1-44...success.\nAttempting automerge of 1-51...success.\n```\n\n### imerge merge\n\n```\n$ git imerge merge 4.0\nAttempting automerge of 1-1...success.\nAttempting automerge of 1-6...success.\nAttempting automerge of 1-9...success.\nAttempting automerge of 1-10...success.\n```\n\n### imerge rebase\n\n```\n$ git imerge rebase 4.0\nThe following commits on the to-be-merged branch are merge commits:\n    8e4931ae15971a14897cf347ac50b7d7fe125ac4\n    d7c772142ce663a20210db73d9ad17cc8d59e0d6\n    856df83c77b33029d2ddfb8eecd08efedeadc027\n```\n\n### imerge continue\n\n```\n$ git add --all\n$ git commit\n[imerge/next e442618] imerge 'next': manual merge 10-26\n$ git imerge continue\nMerge has been recorded for merge 10-26.\nAttempting automerge of 10-27...success.\nAttempting automerge of 10-42...failure.\nAttempting automerge of 10-34...failure.\nAttempting automerge of 10-30...success.\nRecording autofilled block MergeState('next', tip1='master', tip2='4.0', goal='merge')[18:20,34:58].\nMerge is complete!\n```\n\n### imerge finish\n\n```\n$ git imerge finish\nPrevious HEAD position was fcbe161... imerge 'next': automatic merge 19-57\nSwitched to branch 'next'\n[next 23362e6] Merge 4.0 into master (using imerge)\n Date: Wed Sep 2 10:59:56 2015 +1000\n```\n\n### imerge diagram\n\n```\n$ git imerge diagram\n********************\n*????????.?????????|\n*????????.?????????|\n*????????.?????????|\n*????????...-------+\n*????????.*|#???????\n```\n\n### imerge list\n\n```\n$ git imerge list\n* next\n```\n\n### imerge init\n\n```\n$ git imerge init --name=next --goal=merge --first-parent 4.0\n```\n\n### imerge record\n\n```\n$ git imerge record\nMerge has been recorded for merge 10-26.\nAttempting automerge of 10-27...success.\nAttempting automerge of 10-42...failure.\nAttempting automerge of 10-34...failure.\n```\n\n### imerge autofill\n\n```\n$ git imerge autofill\nAttempting automerge of 1-1...success.\nAttempting automerge of 1-29...success.\nAttempting automerge of 1-44...success.\n```\n\n### imerge simplify\n\n```\n$ git imerge simplify\nPrevious HEAD position was 4d19598... imerge 'next': automatic merge 20-57\nSwitched to branch 'next'\n[next 6c308aa] Merge 4.0 into master (using imerge)\n Date: Wed Sep 2 13:37:31 2015 +1000\n```\n\n### imerge remove\n\n```\n$ git imerge remove\n```\n\n### imerge reparent\n\n```\n$ git imerge reparent\n67ebc0e6517ac791de6699453b71d2c7fd81ffcd\n```\n\n\n## [git-issue](https://github.com/dspinellis/git-issue)\n\n### Initialize issue repository\n\n```\n$ git issue init\nInitialized empty Issues repository in /home/dds/src/gi/.issues\n$ git issue new -s 'New issue entered from the command line'\nAdded issue e6a95c9\n```\n\n### Create a new issue (opens editor window)\n\n```\n$ git issue new\nAdded issue 7dfa5b7\n```\n\n### List open issues\n\n```\n$ git issue list\n7dfa5b7 An issue entered from the editor\ne6a95c9 New issue entered from the command line\n```\n\n### Add an issue comment (opens editor window)\n\n```\n$ git issue comment e6a95c9\nAdded comment 8c0d5b3\n```\n\n### Add tag to an issue\n\n```\n$ git issue tag e6a9 urgent\nAdded tag urgent\n```\n\n### Add two more tags\n\n```\n$ git issue tag e6a9 gui crash\nAdded tag gui\nAdded tag crash\n```\n\n### Remove a tag\n\n```\n$ git issue tag -r e6a9 urgent\nRemoved tag urgent\n```\n\n### Assign issue\n\n```\n$ git issue assign e6a9 joe@example.com\nAssigned to joe@example.com\n```\n\n### Add issue watcher\n\n```\n$ git issue watcher e6a9 jane@example.com\nAdded watcher jane@example.com\n```\n\n### List issues tagged as gui\n\n```\n$ git issue list gui\ne6a95c9 New issue entered from the command line\n```\n\n### Push issues repository to a server\n\n```\n$ git issue git remote add origin git@github.com:dspinellis/gi-example.git\n$ git issue git push -u origin master\nCounting objects: 60, done.\nCompressing objects: 100% (50/50), done.\nWriting objects: 100% (60/60), 5.35 KiB | 0 bytes/s, done.\nTotal 60 (delta 8), reused 0 (delta 0)\nTo git@github.com:dspinellis/gi-example.git\n * [new branch]      master -\u003e master\nBranch master set up to track remote branch master from origin.\n```\n\n### Clone issues repository from server\n\n```\n$ git issue clone git@github.com:dspinellis/gi-example.git my-issues\nCloning into '.issues'...\nremote: Counting objects: 60, done.\nremote: Compressing objects: 100% (42/42), done.\nremote: Total 60 (delta 8), reused 60 (delta 8), pack-reused 0\nReceiving objects: 100% (60/60), 5.35 KiB | 0 bytes/s, done.\nResolving deltas: 100% (8/8), done.\nChecking connectivity... done.\nCloned git@github.com:dspinellis/gi-example.git into my-issues\n```\n\n### List open issues\n\n```\n$ git issue list\n7dfa5b7 An issue entered from the editor\ne6a95c9 New issue entered from the command line\n```\n\n### Create new issue\n\n```\n$ git issue new -s 'Issue added on another host'\nAdded issue abc9adc\n```\n\n### Push changes to server\n\n```\n$ git issue push\nCounting objects: 7, done.\nCompressing objects: 100% (6/6), done.\nWriting objects: 100% (7/7), 767 bytes | 0 bytes/s, done.\nTotal 7 (delta 0), reused 0 (delta 0)\nTo git@github.com:dspinellis/gi-example.git\n   d6be890..740f9a0  master -\u003e master\n```\n\n### Show issue added on the other host\n\n```\n$ git issue show 7dfa5b7\nissue 7dfa5b7f4591ecaa8323716f229b84ad40f5275b\nAuthor: Diomidis Spinellis \u003cdds@aueb.gr\u003e\nDate:   Fri, 29 Jan 2016 01:03:24 +0200\nTags:   open\n\n    An issue entered from the editor\n\n    Here is a longer description.\n```\n\n### Show issue and comments\n\n```\n$ git issue show -c e6a95c9\nissue e6a95c91b31ded8fc229a41cc4bd7d281ce6e0f1\nAuthor: Diomidis Spinellis \u003cdds@aueb.gr\u003e\nDate:   Fri, 29 Jan 2016 01:03:20 +0200\nTags:   open urgent gui crash\nWatchers:       jane@example.com\nAssigned-to: joe@example.com\n\n    New issue entered from the command line\n\ncomment 8c0d5b3d77bf93b937cb11038b129f927d49e34a\nAuthor: Diomidis Spinellis \u003cdds@aueb.gr\u003e\nDate:   Fri, 29 Jan 2016 01:03:57 +0200\n\n    First comment regarding the issue.\n```\n\n### Pull in remote changes (on the original host)\n\n```\n$ git issue pull\nremote: Counting objects: 7, done.\nremote: Compressing objects: 100% (6/6), done.\nremote: Total 7 (delta 0), reused 7 (delta 0), pack-reused 0\nUnpacking objects: 100% (7/7), done.\nFrom github.com:dspinellis/gi-example\n   d6be890..740f9a0  master     -\u003e origin/master\nUpdating d6be890..740f9a0\nFast-forward\n issues/ab/c9adc61025a3cb73b0c67470b65cefc133a8d0/description | 1 +\n issues/ab/c9adc61025a3cb73b0c67470b65cefc133a8d0/tags        | 1 +\n 2 files changed, 2 insertions(+)\n create mode 100644 issues/ab/c9adc61025a3cb73b0c67470b65cefc133a8d0/description\n create mode 100644 issues/ab/c9adc61025a3cb73b0c67470b65cefc133a8d0/tags\n```\n\n### List open issues\n\n```\n$ git issue list\n7dfa5b7 An issue entered from the editor\nabc9adc Issue added on another host\ne6a95c9 New issue entered from the command line\n```\n\n### Sub-command auto-completion\n\n```\n$ git issue [Tab]\nassign   clone    comment  git      init     log      pull     show     watcher\nattach   close    edit     help     list     new      push     tag\n```\n\n### Issue Sha auto-completion\n\n```\n$ git issue show [Tab]\n7dfa5b7 - An issue entered from the editor\ne6a95c9 - New issue entered from the command line\n```\n\n\n## [git-lfs](https://github.com/github/git-lfs)\n\n```\n$ git lfs track \"*.mp3\"\nTracking *.mp3\n\n$ git lfs track \"*.zip\"\nTracking *.zip\n\n$ git lfs track\nListing tracked paths\n    *.mp3 (.gitattributes)\n    *.zip (.gitattributes)\n\n$ git lfs untrack \"*.zip\"\nUntracking *.zip\n\n$ git lfs track\nListing tracked paths\n    *.mp3 (.gitattributes)\n```\n\n\n## [git-now](https://github.com/iwata/git-now)\n\n```\n$ git now\n[master 1bd9ce8] [from now] 2015/08/27 10:39:10\n 1 file changed, 1 insertion(+), 1 deletion(-)\n$ git log\ncommit 1bd9ce878a76140f7db95afd9cfd4d7befbc7243\nAuthor: Steve Mao \u003cmaochenyan@gmail.com\u003e\nDate:   Thu Aug 27 10:39:10 2015 +1000\n\n    [from now] 2015/08/27 10:39:10\n\n    diff --git a/package.json b/package.json\n    index 8768569..540523a 100644\n    --- a/package.json\n    +++ b/package.json\n    @@ -1,7 +1,7 @@\n     {\n       \"name\": \"gulp\",\n       \"description\": \"The streaming build system\",\n    -  \"version\": \"3.9.0\",\n    +  \"version\": \"3.10.0\",\n       \"homepage\": \"http://gulpjs.com\",\n       \"repository\": \"gulpjs/gulp\",\n       \"author\": \"Fractal \u003ccontact@wearefractal.com\u003e (http://wearefractal.com/)\",\n```\n\n\n## [git-plus](https://github.com/tkrajina/git-plus)\n\n### multi\n\n```\n$ git multi\n--------------------------------------------------------------------------------\nExecuting git status -s\n--------------------------------------------------------------------------------\nchalk:\n\t M package.json\n\ngulp:\n\t D index.js\n```\n\n### relation\n\n```\n$ git relation origin/4.0\nHEAD and origin/4.0 DIVERGED, common point is 657213a52d5e9c19b85df6a42f76341a98c08ae8\n\nCommits from 657213a52d5e9c19b85df6a42f76341a98c08ae8 to HEAD:\nError retrieving log 657213a52d5e9c19b85df6a42f76341a98c08ae8..HEAD\n```\n\n### old-branches\n\n```\n$ git old-branches -d 10\nBranch 4.0 is older than 10 days (139.86)!\n```\n\n### recent\n\n```\n$ git recent\n      3.64 days: master\n     11.63 days: dev\n```\n\n\n## [git-test](https://github.com/spotify/git-test)\n\n```\n$ git test -v\n4.0 ^origin/4.0 ^origin/master will test        2 commits\niter commit  tree    result\n0000 57af4b0 f5ef0d8 pass (cached)\n0001 10ed389 434370f pass\n```\n\n\n## [legit](https://github.com/kennethreitz/legit)\n\n### branches\n\n```\n$ git branches\n   4.0                        (published)\n   development                (unpublished)\n   everything-is-not-awesome  (published)\n*  master                     (published)\n   old-master                 (published)\n```\n\n### sync\n\n```\n$ git sync\nPulling commits from the server.\nFirst, rewinding head to replay your work on top of it...\nFast-forwarded 4.0 to origin/4.0.\nPushing commits to the server.\n```\n\n### switch\n\n```\n$ git switch master\nSaving local changes.\nSaved working directory and index state On developement: Legit: stashing before switching branches.\nHEAD is now at f0fc4c7 Merge branch 'development'\nSwitching to master.\nYour branch is up-to-date with 'origin/master'.\nRestoring local changes.\nOn branch master\nYour branch is up-to-date with 'origin/master'.\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\tmodified:   package.json\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nDropped stash@{0} (86f5dc9066ff9f69c01c77e2f5a55643ad19f8f2)\n```\n\n### publish\n\n```\n$ git publish\n   4.0                        (published)\n   changelog                  (published)\n   everything-is-not-awesome  (published)\n*  master                     (unpublished)\nBranch None not found, using current branch master\nPublishing master.\nBranch master set up to track remote branch master from origin.\n```\n\n### unpublish\n\n```\n$ git unpublish master\nUnpublishing master.\n```\n\n\n## [git-when-merged](https://github.com/mhagger/git-when-merged)\n\n```\n$ git when-merged a2c9e695ecf3600f21fa731e705fd1a0503632d9\nrefs/heads/master                      5a2ec1b1a6633f830bd4a2b1daab578c062e6975\n$ git when-merged HEAD\nrefs/heads/master                      Commit is directly on this branch.\n```\n\n\n## [git-playback](https://github.com/jianli/git-playback)\n\n```\n$ git playback README.md\n```\n\n![](https://camo.githubusercontent.com/9abe1d2de474dbc0d1ad4f48acf9e954ff0d0b30/68747470733a2f2f7261772e6769746875622e636f6d2f6a69616e6c692f6769742d706c61796261636b2f6d61737465722f616e696d6174696f6e2e676966)\n\n\n## [git-branch-status](https://github.com/alexdavid/git-branch-status)\n\n```\n$ git branch-status\n 4.0       [57 ahead and 38 behind master]    [up to date with origin/4.0]\n master    [current branch]                   [1 ahead of origin/master]\n```\n\n\n## [git-open](https://github.com/paulirish/git-open)\n\n```\n$ git open\n\u003e open https://github.com/REMOTE_ORIGIN_USER/CURRENT_REPO/tree/CURRENT_BRANCH\n\n$ git open upstream\n\u003e open https://github.com/REMOTE_UPSTREAM_USER/CURRENT_REPO/tree/CURRENT_BRANCH\n\n$ git open upstream master\n\u003e open https://github.com/REMOTE_UPSTREAM_USER/CURRENT_REPO/tree/master\n```\n\n\n## [git-my](https://github.com/davidosomething/git-my)\n\n```\n$ git my\n\n+------------------------------------------------------------------------------+\n| your name's remote branches in git@repo:repopath/reponame.git                |\n+------------------------------------------------------------------------------+\n\n   local copy?  in master?  branch name\n  ................[merged]. EC-242\n  .....[local]....[merged]. commonjs-lazyload\n  .....[local]............. enqueue-gpt\n  ......................... defunct-ios-app-nag\n  .....[local]............. factor-bundles\n```\n\n\n## [git-ink](https://github.com/davidosomething/git-ink)\n\n```\n$ git ink\n\n• enqueue-gpt ........................................... 2015-08-31\n• factor-bundles ........................................ 2015-10-14\n    - Pull out more modules into node_modules\n    - Works but does not provide any gains\n• hbsfy ................................................. 2015-10-21\n✓ master ................................................ 2015-10-22\n• nda-ads4 .............................................. 2015-10-22\n• remove-equalize_content_height ........................ 2015-10-21\n• remove-exorcise ....................................... 2015-10-21\n    - Need to DRY up exorcise function\n    - Does not map properly when uglified\n    - Need to undo postCSS mapping changes\n• rm-convert_dates-order ................................ 2015-10-22\n• sass-lint ............................................. 2015-10-14\n    - module does not work\n```\n\n\n## [recursive-blame](https://github.com/scottgonzalez/recursive-blame)\n\n```\n$ git recursive-blame version package.json\n\nCommit: 247479d017f138c26be27c64a0ce27f5f21fc0af\nAuthor: Jeff Cross \u003cmiddlefloor@gmail.com\u003e\nDate:   Tue Oct 13 15:58:13 2015 -0700 (7 weeks ago)\nPath:   package.json\nMatch:  1 of 1\n\n    chore(release): bump angular version to alpha.42\n\n1) {\n2)   \"name\": \"angular\",\n3)   \"version\": \"2.0.0-alpha.42\",\n4)   \"branchPattern\": \"2.0.*\",\n5)   \"description\": \"Angular 2 - a web framework for modern web apps\",\n6)   \"homepage\": \"https://github.com/angular/angular\",\n7)   \"bugs\": \"https://github.com/angular/angular/issues\",\n\nNext action [r,n,p,c,d,q,?]? r\n\nCommit: bb9d299b3860f6d579192828451ccd7ace70e1d8\nAuthor: Igor Minar \u003cigor@angularjs.org\u003e\nDate:   Tue Oct 13 12:28:03 2015 -0700 (7 weeks ago)\nPath:   package.json\nMatch:  1 of 1\n\n    chore(release): bump angular version to alpha.41\n\n1) {\n2)   \"name\": \"angular\",\n3)   \"version\": \"2.0.0-alpha.41\",\n4)   \"branchPattern\": \"2.0.*\",\n5)   \"description\": \"Angular 2 - a web framework for modern web apps\",\n6)   \"homepage\": \"https://github.com/angular/angular\",\n7)   \"bugs\": \"https://github.com/angular/angular/issues\",\n```\n\n\n## [hyper-blame](https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/git-hyper-blame.html)\n\n\n```\n$ git hyper-blame -i 3ddda43c ipsum.txt\nc6eb3bfa (lorem 2014-08-11 23:15:57 +0000  1) LOREM IPSUM DOLOR SIT AMET, CONSECTETUR\n134200d1 (lorem 2014-04-10 08:54:46 +0000 2*) ADIPISCING ELIT, SED DO EIUSMOD TEMPOR\na34a1d0d (ipsum 2014-04-11 11:25:04 +0000 3*) INCIDIDUNT UT LABORE ET DOLORE MAGNA\n134200d1 (lorem 2014-04-10 08:54:46 +0000 4*) ALIQUA. UT ENIM AD MINIM VENIAM, QUIS\nc6eb3bfa (lorem 2014-08-11 23:15:57 +0000  5) NOSTRUD EXERCITATION ULLAMCO LABORIS\n0f0d17bd (dolor 2014-06-02 11:31:48 +0000 6*) NISI UT ALIQUIP EX EA COMMODO CONSEQUAT.\n```\n\n\n## [git-word-blame](https://framagit.org/mdamien/git-word-blame)\n\n\n```\n$ git word-blame README.md\nresults in /tmp/word-blame-output/\n - author_stats.tsv\n - commit_stats.tsv\n - word-blame-by-commit.html\n - word-blame-by-author.html\n - text-output\n```\n\n![git word-blame on this README](https://user-images.githubusercontent.com/1469823/57202569-0247eb00-6fa7-11e9-8549-f55d81299fab.png)\n\n\n\n## [git-fire](https://github.com/qw3rtman/git-fire)\n\n```\n$ git fire\nSwitched to a new branch 'fire-master-maochenyan@gmail.com-1451379915'\nOn branch fire-master-maochenyan@gmail.com-1451379915\nnothing to commit, working directory clean\nCounting objects: 2, done.\nWriting objects: 100% (2/2), 168 bytes | 0 bytes/s, done.\nTotal 2 (delta 0), reused 0 (delta 0)\nTo git@bitbucket.org:maochenyan/fire.git\n * [new branch]      fire-master-maochenyan@gmail.com-1451379915 -\u003e fire-master-maochenyan@gmail.com-1451379915\nBranch fire-master-maochenyan@gmail.com-1451379915 set up to track remote branch fire-master-maochenyan@gmail.com-1451379915 from origin.\n\n\nLeave building!\n```\n\n\n## [Git Town](https://github.com/git-town/git-town)\n\n### git hack\n\n```\n$ git hack my-branch\n[main] git fetch --prune --tags\n\n[main] git rebase origin/main\n\n[main] git branch my-branch main\n\n[main] git checkout my-branch\n```\n\n### git sync\n\n```\n$ git sync\n[my-branch] git fetch --prune --tags\n\n[my-branch] git checkout main\n\n[main] git rebase origin/main\n\n[main] git checkout my-branch\n\n[my-branch] git merge --no-edit main\n\n[my-branch] git push -u origin my-branch\n * [new branch]      my-branch -\u003e my-branch\nBranch 'my-branch' set up to track remote branch 'my-branch' from 'origin'.\n```\n\n### git new-pull-request\n\n```\n$ git new-pull-request\n[my-branch] git fetch --prune --tags\n\n[my-branch] git checkout main\n\n[main] git rebase origin/main\n\n[main] git checkout my-branch\n\n[my-branch] git merge --no-edit origin/my-branch\n\n[my-branch] git merge --no-edit main\n\nopen \u003curl to create pull request for current branch\u003e\n```\n\n### git ship\n\n```\n[my-branch] git fetch --prune --tags\n\n[my-branch] git checkout main\n\n[main] git rebase origin/main\n\n[main] git checkout my-branch\n\n[my-branch] git merge --no-edit origin/my-branch\n\n[my-branch] git merge --no-edit main\n\n[my-branch] git checkout main\n\n[main] git merge --squash my-branch\n\n[main] git commit\n 1 file changed, 2 insertions(+)\n\n[main] git push\n\n[main] git push origin :my-branch\n - [deleted]         my-branch\n\n[main] git branch -D my-branch\nDeleted branch my-branch (was 55cb0f7).\n```\n\n## [git-blame-someone-else](https://github.com/jayphelps/git-blame-someone-else)\n\n```\n$ git blame-someone-else 'Steve Mao \u003cmaochenyan@gmail.com\u003e' 2efb4e3a061a2e8aaa58033e9c13c3e0e5fcde4b\nSteve Mao  is now the author of 2efb4e3. You're officially an asshole.\n```\n\n\n## [diff-so-fancy](https://github.com/so-fancy/diff-so-fancy)\n\n```\n$ git dsf\n```\n\n![diff-highlight vs diff-so-fancy](https://user-images.githubusercontent.com/3429760/32387617-44c873da-c082-11e7-829c-6160b853adcb.png)\n\n\n## [git-stats](https://github.com/IonicaBizau/git-stats)\n\n![](http://i.imgur.com/PpM0i3v.png)\n\n\n## [git-secret](https://github.com/sobolevn/git-secret)\n\n### git secret init\n\n```\n$ git secret init\n'.gitsecret/' created.\n```\n\n### git secret tell\n\n```\n$ git secret tell my@email.com\ndone. my@email.com added as a person who knows the secret.\ncleaning up...\n```\n\n### git secret add\n\n```\n$ git secret add hideme.txt\n1 items added.\n```\n\n### git secret list\n\n```\n$ git secret list\nhideme.txt\n```\n\n### git secret hide\n\n```\n$ git secret hide\ndone. all 1 files are hidden.\n```\n\n### git secret reveal\n\n```\n$ git secret reveal\n\nYou need a passphrase to unlock the secret key for\nuser: \"Test User \u003cmy@email.com\u003e\"\n2048-bit RSA key, ID #######, created 2015-01-01 (main key ID #######)\n\ngpg: gpg-agent is not available in this session\nFile `hideme.txt' exists. Overwrite? (y/N) y\ndone. all 1 files are revealed.\n```\n\n\n## [git-secrets](https://github.com/awslabs/git-secrets)\n\n\u003e Prevents you from committing passwords and other sensitive information to a git repository.\n\nTBD - PR Welcome!\n\n\n## [git-fixup](https://github.com/keis/git-fixup)\n\n```\n$ git diff --cached -U0\ndiff --git a/README.md b/README.md\nindex 0c700d1..7a57cef 100644\n--- a/README.md\n+++ b/README.md\n@@ -1330 +1330 @@ $ git secret hide\n-done. all 1 files are hidden.\n+done. all 3 files are hidden.\n$ git fixup 6d623f6525dd94b4aaea6f6ae2e7a59edc39bdb8\n24aa3d9c10cc02fe813dc83d1ac792cc2e7d705d [F] add screenshot of git-stats \u003cmaochenyan@gmail.com\u003e\n6d623f6525dd94b4aaea6f6ae2e7a59edc39bdb8 [L] changed gif with text \u003cmail@sobolevn.me\u003e\n```\n\n\n## [git-recent](https://github.com/paulirish/git-recent)\n\n```\n$ git recent\n```\n\n![git-recent screenshot](https://cloud.githubusercontent.com/assets/39191/17446638/039d4cee-5aff-11e6-9e11-4294f0020513.png)\n\n## [git-interactive-rebase-tool](https://github.com/MitMaro/git-interactive-rebase-tool)\n\n```\n$ git rebase -i master\n```\n\n![git-interactive-rebase-tool screenshot](https://raw.githubusercontent.com/MitMaro/git-interactive-rebase-tool/master/docs/assets/images/git-interactive-rebase-demo.gif)\n\n## [git-fiddle](https://github.com/felixSchl/git-fiddle)\n\n```\n$ git fiddle -h\ngit-fiddle\n\nEdit commit meta information during an *interactive* rebase.\n\n`git-fiddle(1)' is a lightweight wrapper around `git-rebase(1)' that\nannotates each commit with it's *author* date, the author name, as well\nas the commit message. Changes to any of these will then be applied\nusing an 'exec' script during the git-rebase sequence.\n\nUsage:\n  $SCRIPT [--[no-]-fiddle-messages] [args...]\n\nOptions:\n  --[no-]fiddle-messages Do not edit commit messages. Useful for quick edits\n                         to author or date. This value can also be set using\n                         `git config fiddle.messages`.\n  [args...]              These arguments are passed verbatim to git-rebase.\n```\n\n\n## [git-user](https://github.com/gesquive/git-user)\n\n```\n# add a work profile for Henry\n$ git user add work \"Dr. Henry Jekyll\" henry@jekyll.com\nAdded profile 'work'\n\n# add a personal profile for Edward\n$ git user add home \"Edward Hyde\" hyde@night.com\nAdded profile 'home'\n\n# list out our saved profiles\n$ git user list\nGlobal Profile:\n  User: Henry \u003chjekyll@gmail.com\u003e\n\nSaved Profiles:\n  home: Edward Hyde \u003chyde@night.com\u003e\n  work: Dr. Henry Jekyll \u003chenry@jekyll.com\u003e\n\n# set the current git repository user to the home profile\n$ git user set home\nThe user for the 'project' repository has been set too 'Edward Hyde \u003chyde@night.com\u003e'\n\n# list profiles again, notice how the current repository profile is now set\n$ git user\nProject Profile:\n  Path: /path/to/git/project\n  User: Edward Hyde \u003chyde@night.com\u003e\n\nSaved Profiles:\n  home: Edward Hyde \u003chyde@night.com\u003e\n  work: Dr. Henry Jekyll \u003chenry@jekyll.com\u003e\n```\n\n\n## [gitsome](https://github.com/donnemartin/gitsome)\n\nTBD - PR Welcome!\n\n\n## [git-hound](https://github.com/ezekg/git-hound)\n\nTBD - PR Welcome!\n\n\n## [git-recall](https://github.com/Fakerr/git-recall)\n\n![](https://camo.githubusercontent.com/eb306717b95724c33dd0de91faa535a4818cc7d0/687474703a2f2f696d6775722e636f6d2f7a7577324c71572e676966)\n\n```\n$ git recall\n# By default (without options), the command will display commits from yesterday and\n# for the current user.\n\n$ git recall -d 5 -a \"Doge\"\n# Show all Doge's commits from 5 days ago.\n\n$ git recall -d 5 -a \"all\"\n# Show commits of all contributors from 5 days ago.\n\n$ git recall -f\n# Fetch commits beforehand.\n```\n\n\n## [git-standup](https://github.com/kamranahmedse/git-standup)\n\n```\n$ git standup\n2f50b39c - docs(commit messages): use commitizen to generate Conventional Commits (12 hours ago) \u003cSteve Mao\u003e\n9af3600e - fix tests (12 hours ago) \u003cSteve Mao\u003e\n7f17ba97 - docs: title case (12 hours ago) \u003cSteve Mao\u003e\na6d6203c - do not scroll when search is open (12 hours ago) \u003cSteve Mao\u003e\n53fe681a - chore(pkg): add repo url (12 hours ago) \u003cSteve Mao\u003e\n5e952ac0 - subtitle should be generic (13 hours ago) \u003cSteve Mao\u003e\nadbc5423 - add ci/cd to readme. (13 hours ago) \u003cSteve Mao\u003e\na1097116 - add versioning to readme (14 hours ago) \u003cSteve Mao\u003e\n6b6e7465 - add test coverage (15 hours ago) \u003cSteve Mao\u003e\n```\n\n\n## [commitizen](https://github.com/commitizen/cz-cli)\n\n```\n$ git cz\ncz-cli@2.9.6, cz-conventional-changelog@1.2.0\n\n\nLine 1 will be cropped at 100 characters. All other lines will be wrapped after 100 characters.\n\n? Select the type of change that you're committing: (Use arrow keys)\n❯ feat:     A new feature\n  fix:      A bug fix\n  docs:     Documentation only changes\n  style:    Changes that do not affect the meaning of the code (white-space, formatting, missing semi\n-colons, etc)\n  refactor: A code change that neither fixes a bug nor adds a feature\n  perf:     A code change that improves performance\n  test:     Adding missing tests or correcting existing tests\n```\n\n\n## [git-fresh](https://github.com/imsky/git-fresh)\n\nTBD - PR Welcome!\n\n## [git-fs](https://github.com/freddi301/git-fs)\n\n```\n$ git fs\nMounting readonly filesystem on ./git/fs\n```\n\n## [git-url](https://github.com/zdharma/git-url)\n\n### git url\n\n```\n$ cd ~/github/git-url.git\n$ git url\nEncoding... INPUT is next paragraph:\n\nProtocol:  https\nSite:      github.com\nRepo:      zdharma/git-url\nRevision:  master\n\ngitu://ҝjȩMżEäḝЃȣϟṈӛŀї\n\n$ git url -r v1.0\nEncoding... INPUT is next paragraph:\n\nProtocol:  https\nSite:      github.com\nRepo:      zdharma/git-url\nRevision:  v1.0\n\ngitu://ŪĪАϔEäḝЃȣϟṈӛŀї\n\n$ git url -q -p lib/common.sh\t# -q - quiet, -p - path\ngitu://eḶȸṋ0oǗȟЗÛjȩMżEäḝЃȣϟṈӛŀї\n\n$ git url //eḶȸṋ0oǗȟЗÛjȩMżEäḝЃȣϟṈӛŀї\nDecoding... OUTPUT is:\n\nProtocol:  https\nSite:      github.com\nRepo:      zdharma/git-url\nRevision:  master\nFile:      lib/common.sh\n\nhttps://github.com/zdharma/git-url\n```\n\n### git guclone\n\n```\n$ git guclone ŪĪАϔEäḝЃȣϟṈӛŀї\nCloning URL https://github.com/zdharma/git-url for revision v1.0\n\nCloning into 'git-url'...\nremote: Counting objects: 144, done.\nremote: Compressing objects: 100% (111/111), done.\nremote: Total 144 (delta 71), reused 102 (delta 32), pack-reused 0\nReceiving objects: 100% (144/144), 116.43 KiB | 125.00 KiB/s, done.\nResolving deltas: 100% (71/71), done.\n\nChecking out revision/reference v1.0... OK\nHEAD is at: 5d10a204, created directory git-url\n```\n\n\n## [git-signatures](https://github.com/hashbang/git-signatures)\n\n### signatures add --push\n\n```\n$ git signatures add --push v1.0.0\nUpdated tag 'v1.0.0' (was 4de5afd)\nEnumerating objects: 4, done.\nCounting objects: 100% (4/4), done.\nDelta compression using up to 8 threads\nCompressing objects: 100% (3/3), done.\nWriting objects: 100% (3/3), 906 bytes | 906.00 KiB/s, done.\nTotal 3 (delta 1), reused 0 (delta 0)\nTo git@github.com:jsmith/test-signatures\n   4b5300d..5b1f2cd  refs/notes/signatures -\u003e refs/notes/signatures\n + 4de5afd...5b1f2cd v1.0.0 -\u003e v1.0.0 (forced update)\n```\n\n\n### signatures verify\n\n```\n$ git signatures verify v1.0.0\n```\n\n\n### signatures verify --min-count 2\n\n```\n$ git signatures verify --min-count 2 v1.0.0\nFailed to find enough verified signatures to satisfy: min_count=2\n\nSignature verification could fail simply because your local gnupg\nkeychain and trustdb does not contain the required keys.\n\nFor detailed signature status run:\n\n\u003e git signatures show\n```\n\n\n### signatures show\n\n```\n$ git signatures show v1.0.0\n Public Key ID    | Status     | Trust     | Date                         | Signer Name\n=======================================================================================================================\n01234567890ABCDEF | VALIDSIG   | ULTIMATE  | Sat Nov 10 13:16:10 EST 2018 | Steve Mao \u003cmaochenyan@gmail.com\u003e\n ```\n\n## [git-profile](https://github.com/dm3ch/git-profile-manager)\n### add a work profile\n```\n$ git profile add work\nName: Name Surname\nEmail: name@work-domain.com\nSigning Key:\nProfile work added successfully\n```\n\n### add a personal profile\n```\n$ git profile add home -n \"Name Surname\" -e name@gmail.com\nProfile home added successfully\n```\n\n### list out our saved profiles\n```\n$ git profile list\nExisting profiles:\nwork\nhome\n```\n\n### set the current git repository user to the home profile\n```\n$ git profile use work\n```\nCurrently there will be no output in case of success\n\n## [git-revise](https://github.com/mystor/git-revise)\n\nTBD - PR Welcome!\n\n## [filter-repo](https://github.com/newren/git-filter-repo)\n\nTBD - PR Welcome!\n\n## [git-jump](https://github.com/mykolaharmash/git-jump)\n\nInteractive UI and fuzzy-search for Git branches.\n\n![git-jump interface demo](https://raw.githubusercontent.com/mykolaharmash/git-jump/main/img/demo.gif)\n\n## [git-project](https://github.com/mms-gianni/git-projecto)\n```\ngit project open shoppinglist\n```\n```\ngit project add shoppinglist milk\n```\n```\n$ git project board\n\n Project: shoppinglist\n+-----------+------+\n|   OPEN    | DONE |\n+-----------+------+\n| something | love |\n+-----------+------+\n| coffee    |      |\n+-----------+      +\n| sugar     |      |\n+-----------+      +\n| milk      |      |\n+-----------+------+\n```\n\n```\n$ git project status\n\nProject: shoppinglist\n  0|  ⭐  something\n  1|  ⭐  coffee\n  2|  ⭐  sugar\n  3|  ⭐  milk\n  4|  ✅  love\n```\n\n## [git-branchcut](https://github.com/dlsrb6342/git-branchcut)\n### Delete branches with string pattern\n```\n$ git branchcut execute -p \"feature/*\"\nSwitched to branch 'main'\nDeleted branch feature/test (was 257725f).\nDeleted branch feature/impl (was 8120c0b).\n```\n\n### Delete branches with day-offset\n```\n$ git branchcut execute -o 7\nSwitched to branch 'main'\nDeleted branch bugfix/test (was e2afad6).\nDeleted branch too-old-branch (was 1d3f82d).\n```\n\n## [git-exfiltrate](https://github.com/Incognito/git-exfiltrator)\n### Break apart large branches into smaller ones\n\nAssume a hypothetical project where you make changes to two software component\nfolders in one feature-branch, you can use this tool to make that two branches\nwith a preserved history for both.\n\n```\ngit checkout feature-branch\n./git-exfiltrate master feature-branch-extracted \"component-folder/*\"\n```\n\nThe `feature-branch-extracted` branch will be created with just the contents of\n`component-folder` from the feature-branch changes.\n\n```\n*   e01009e  (main)\n|\n| * ce4ca64  (feature-branch-extracted)\n| |  component-folder/1 | 20 +\n| * f3bf092\n| |  component-folder/1 | 20 +\n* | 4b2ebd6\n|/\n|\n| * d4c374e  (feature-branch)\n| |  component-folder/1 | 20 +\n| |  different-component-folder/2 | 100 -\n| * 4724dbb\n| |  component-folder/1 | 20 +\n| |  different-component-folder/2 | 100 -\n|/\n* 927799f\n* 219e9b2\n```\n\n## [git-spend](https://github.com/Goutte/git-spend)\n\nCollect and sum the `/spend \u003cduration\u003e` directives found in commit messages.\n\n```\n$ git spend sum\n3 weeks 2 days 1 hour 37 minutes\n```\n\n### Filter by author, range, and more\n\n```\n$ git spend sum --author stevemao --author antoine@goutenoir.com --since tags/v1.0.0\n1 week 3 hours\n```\n\n\n## License\n\n[![CC0](https://i.creativecommons.org/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/)\n\nTo the extent possible under law, [Steve Mao](https://github.com/stevemao) has waived all copyright and related or neighboring rights to this work.\n","funding_links":[],"categories":["Programming","Development Environment","Technical","开发环境","Other Awesome Lists","\u003ca name=\"writing\"\u003e\u003c/a\u003eWriting","Others","miscellaneous","Uncategorized","Developer Environment","Git","Guides","Live Site:   [searchAwesome](https://search-awesome.vercel.app/)","Clients/Tools/Resources","Misc","Tools","Development:","cli","git","Themed Directories"],"sub_categories":["awesome-*","Emoji","Uncategorized","Other","Comparing workflows","Misc"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstevemao%2Fawesome-git-addons","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstevemao%2Fawesome-git-addons","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstevemao%2Fawesome-git-addons/lists"}