{"id":13395252,"url":"https://github.com/wfxr/forgit","last_synced_at":"2025-05-13T00:10:30.741Z","repository":{"id":37396865,"uuid":"110850974","full_name":"wfxr/forgit","owner":"wfxr","description":":zzz: A utility tool powered by fzf for using git interactively.","archived":false,"fork":false,"pushed_at":"2025-05-01T00:38:15.000Z","size":432,"stargazers_count":4668,"open_issues_count":10,"forks_count":142,"subscribers_count":25,"default_branch":"main","last_synced_at":"2025-05-01T03:18:54.134Z","etag":null,"topics":["bash","cli","fish","fzf","git","zsh","zsh-plugin"],"latest_commit_sha":null,"homepage":"","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/wfxr.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,"zenodo":null}},"created_at":"2017-11-15T15:27:38.000Z","updated_at":"2025-04-30T19:53:17.000Z","dependencies_parsed_at":"2023-12-27T00:22:05.687Z","dependency_job_id":"d4385a26-dae1-4ea8-a568-75129089f12e","html_url":"https://github.com/wfxr/forgit","commit_stats":{"total_commits":445,"total_committers":65,"mean_commits":6.846153846153846,"dds":0.6292134831460674,"last_synced_commit":"7a40a11e795f42c851eefbb2fd39419383c66ccd"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wfxr%2Fforgit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wfxr%2Fforgit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wfxr%2Fforgit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wfxr%2Fforgit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wfxr","download_url":"https://codeload.github.com/wfxr/forgit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253843215,"owners_count":21972873,"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":["bash","cli","fish","fzf","git","zsh","zsh-plugin"],"created_at":"2024-07-30T17:01:47.770Z","updated_at":"2025-05-13T00:10:30.717Z","avatar_url":"https://github.com/wfxr.png","language":"Shell","readme":"\u003ch1 align=\"center\"\u003e💤 forgit\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n    \u003cem\u003eUtility tool for using git interactively. Powered by \u003ca href=\"https://github.com/junegunn/fzf\"\u003ejunegunn/fzf\u003c/a\u003e.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/wfxr/forgit/actions\"\u003e\n        \u003cimg src=\"https://github.com/wfxr/forgit/workflows/ci/badge.svg\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://wfxr.mit-license.org/2017\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/License-MIT-brightgreen.svg\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://img.shields.io/badge/Shell-Bash%20%7C%20Zsh%20%7C%20Fish-blue\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Shell-Bash%20%7C%20Zsh%20%7C%20Fish-blue\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/unixorn/awesome-zsh-plugins\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Awesome-zsh--plugins-d07cd0?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABVklEQVRIS+3VvWpVURDF8d9CRAJapBAfwWCt+FEJthIUUcEm2NgIYiOxsrCwULCwktjYKSgYLfQF1JjCNvoMNhYRCwOO7HAiVw055yoBizvN3nBmrf8+M7PZsc2RbfY3AfRWeNMSVdUlHEzS1t6oqvt4n+TB78l/AKpqHrdwLcndXndU1WXcw50k10c1PwFV1fa3cQVzSR4PMd/IqaoLeIj2N1eTfG/f1gFVtQMLOI+zSV6NYz4COYFneIGLSdZSVbvwCMdxMsnbvzEfgRzCSyzjXAO8xlHcxMq/mI9oD+AGlhqgxjD93OVOD9TUuICdXd++/VeAVewecKKv2NPlfcHUAM1qK9FTnBmQvJjkdDfWzzE7QPOkAfZiEce2ECzhVJJPHWAfGuTwFpo365pO0NYjmEFr5Eas4SPeJfll2rqb38Z7/yaaD+0eNM3kPejt86REvSX6AamgdXkgoxLxAAAAAElFTkSuQmCC\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/pre-commit/pre-commit\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white\" alt=\"pre-commit\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/wfxr/forgit/graphs/contributors\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/contributors/wfxr/forgit\" alt=\"Contributors\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\nThis tool is designed to help you use git more efficiently.\nIt's **lightweight** and **easy to use**.\n\n# 📥 Installation\n\n## Requirements\n\n- [`fzf`](https://github.com/junegunn/fzf) version `0.49.0` or higher\n\n  If your OS package manager bundles an older version of `fzf`, you might install it using [`fzf`'s own install script'](https://github.com/junegunn/fzf?tab=readme-ov-file#using-git).\n\n## Shell package managers\n\n``` zsh\n# for zplug\nzplug 'wfxr/forgit'\n\n# for zgen\nzgen load 'wfxr/forgit'\n\n# for antigen\nantigen bundle 'wfxr/forgit'\n\n# for fisher (requires fisher v4.4.3 or higher)\nfisher install wfxr/forgit\n\n# for omf\nomf install https://github.com/wfxr/forgit\n\n# for zinit\nzinit load wfxr/forgit\n\n# for oh-my-zsh\ngit clone https://github.com/wfxr/forgit.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/forgit\n\n# for sheldon.cli\n[plugins.forgit]\ngithub = \"wfxr/forgit\"\nrev = \"25.02.0\"\nuse = [\"forgit.plugin.zsh\"]\napply = [\"source\"]\n\n# manually\n# Clone the repository and source it in your shell's rc file or put bin/git-forgit into your $PATH\n```\n\n## Homebrew\n\nTo install using brew\n```sh\nbrew install forgit\n```\n\nThen add the following to your shell's config file:\n```sh\n# Fish:\n# ~/.config/fish/config.fish:\n[ -f $HOMEBREW_PREFIX/share/forgit/forgit.plugin.fish ]; and source $HOMEBREW_PREFIX/share/forgit/forgit.plugin.fish\n\n# Zsh:\n# ~/.zshrc:\n[ -f $HOMEBREW_PREFIX/share/forgit/forgit.plugin.zsh ] \u0026\u0026 source $HOMEBREW_PREFIX/share/forgit/forgit.plugin.zsh\n\n# Bash:\n# ~/.bashrc:\n[ -f $HOMEBREW_PREFIX/share/forgit/forgit.plugin.sh ] \u0026\u0026 source $HOMEBREW_PREFIX/share/forgit/forgit.plugin.sh\n```\n\n## Arch User Repository\n\n[AUR](https://wiki.archlinux.org/title/Arch_User_Repository) packages, maintained by the developers of forgit, are available. Install the [forgit](https://aur.archlinux.org/packages/forgit) package for the latest release or [forgit-git](https://aur.archlinux.org/packages/forgit-git) to stay up to date with the latest commits from the default branch of this repository.\n\n# 📝 Features\n\n- **Interactive `git add` selector** (`ga`)\n\n![screenshot](https://raw.githubusercontent.com/wfxr/i/master/forgit-ga.png)\n\n- **Interactive `git log` viewer** (`glo`)\n\n![screenshot](https://raw.githubusercontent.com/wfxr/i/master/forgit-glo.png)\n\n*The log graph can be disabled by option `FORGIT_LOG_GRAPH_ENABLE` (see discuss in [issue #71](https://github.com/wfxr/forgit/issues/71)).*\n\n- **Interactive `.gitignore` generator** (`gi`)\n\n![screenshot](https://raw.githubusercontent.com/wfxr/i/master/forgit-gi.png)\n\n- **Interactive `git diff` viewer** (`gd`)\n\n- **Interactive `git show` viewer** (`gso`)\n\n- **Interactive `git reset HEAD \u003cfile\u003e` selector** (`grh`)\n\n- **Interactive `git checkout \u003cfile\u003e` selector** (`gcf`)\n\n- **Interactive `git checkout \u003cbranch\u003e` selector** (`gcb`)\n\n- **Interactive `git branch -D \u003cbranch\u003e` selector** (`gbd`)\n\n- **Interactive `git checkout \u003ctag\u003e` selector** (`gct`)\n\n- **Interactive `git checkout \u003ccommit\u003e` selector** (`gco`)\n\n- **Interactive `git revert \u003ccommit\u003e` selector** (`grc`)\n\n- **Interactive `git stash` viewer** (`gss`)\n\n- **Interactive `git stash push` selector** (`gsp`)\n\n- **Interactive `git clean` selector** (`gclean`)\n\n- **Interactive `git cherry-pick` selector** (`gcp`)\n\n- **Interactive `git rebase -i` selector** (`grb`)\n\n- **Interactive `git reflog` viewer** (`grl`)\n\n- **Interactive `git blame` selector** (`gbl`)\n\n- **Interactive `git commit --fixup \u0026\u0026 git rebase -i --autosquash` selector** (`gfu`)\n\n# ⌨ Keybindings\n\n| Key                                           | Action                                      |\n| :-------------------------------------------: | ------------------------------------------- |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e                              | Confirm                                     |\n| \u003ckbd\u003eTab\u003c/kbd\u003e                                | Toggle mark and move down                   |\n| \u003ckbd\u003eShift\u003c/kbd\u003e - \u003ckbd\u003eTab\u003c/kbd\u003e             | Toggle mark and move up                     |\n| \u003ckbd\u003e?\u003c/kbd\u003e                                  | Toggle preview window                       |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e - \u003ckbd\u003eW\u003c/kbd\u003e                 | Toggle preview wrap                         |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e - \u003ckbd\u003eS\u003c/kbd\u003e                | Toggle sort                                 |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e - \u003ckbd\u003eR\u003c/kbd\u003e                | Toggle selection                            |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e - \u003ckbd\u003eY\u003c/kbd\u003e                | Copy commit hash/stash ID*                  |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e - \u003ckbd\u003eK\u003c/kbd\u003e / \u003ckbd\u003eP\u003c/kbd\u003e | Selection move up                           |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e - \u003ckbd\u003eJ\u003c/kbd\u003e / \u003ckbd\u003eN\u003c/kbd\u003e | Selection move down                         |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e - \u003ckbd\u003eK\u003c/kbd\u003e / \u003ckbd\u003eP\u003c/kbd\u003e  | Preview move up                             |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e - \u003ckbd\u003eJ\u003c/kbd\u003e / \u003ckbd\u003eN\u003c/kbd\u003e  | Preview move down                           |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e - \u003ckbd\u003eE\u003c/kbd\u003e                 | Open file in default editor (when possible) |\n\n\\* Available when the selection contains a commit hash or a stash ID.\nFor Linux users `FORGIT_COPY_CMD` should be set to make copy work. Example: `FORGIT_COPY_CMD='xclip -selection clipboard'`.\n\n# ⚙ Options\n\nOptions can be set via environment variables. They have to be **exported** in\norder to be recognized by `forgit`.\n\nFor instance, if you want to order branches in `gcb` by the last committed date you could:\n\n```shell\nexport FORGIT_CHECKOUT_BRANCH_BRANCH_GIT_OPTS='--sort=-committerdate'\n```\n\n## shell aliases\n\nYou can change the default aliases by defining these variables below before sourcing the forgit shell plugin.\n(To disable all aliases, Set the `FORGIT_NO_ALIASES` flag.)\n\n``` bash\nforgit_log=glo\nforgit_reflog=grl\nforgit_diff=gd\nforgit_show=gso\nforgit_add=ga\nforgit_reset_head=grh\nforgit_ignore=gi\nforgit_attributes=gat\nforgit_checkout_file=gcf\nforgit_checkout_branch=gcb\nforgit_branch_delete=gbd\nforgit_checkout_tag=gct\nforgit_checkout_commit=gco\nforgit_revert_commit=grc\nforgit_clean=gclean\nforgit_stash_show=gss\nforgit_stash_push=gsp\nforgit_cherry_pick=gcp\nforgit_rebase=grb\nforgit_blame=gbl\nforgit_fixup=gfu\n```\n\n## git integration\n\nYou can use forgit as a sub-command of git by making `git-forgit` available in `$PATH`:\n\n```sh\n# after `forgit` was loaded\nPATH=\"$PATH:$FORGIT_INSTALL_DIR/bin\"\n```\n\n*Some plugin managers can help do this.*\n\nThen, any forgit command will be a sub-command of git:\n\n```cmd\ngit forgit log\ngit forgit add\ngit forgit diff\n```\n\nOptionally you can add [aliases in git](https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases):\n\n```sh\ngit config --global alias.cf 'forgit checkout_file'\n```\n\nAnd use forgit functions via a git alias:\n\n```sh\ngit cf\n```\n\n## git options\n\nIf you want to customize `git`'s behavior within forgit there is a dedicated variable for each forgit command.\nThese are passed to the according `git` calls.\n\n| Command  | Option                                                                      |\n| -------- | --------------------------------------------------------------------------- |\n| `ga`     | `FORGIT_ADD_GIT_OPTS`                                                       |\n| `glo`    | `FORGIT_LOG_GIT_OPTS`                                                       |\n| `grl`    | `FORGIT_REFLOG_GIT_OPTS`                                                    |\n| `gd`     | `FORGIT_DIFF_GIT_OPTS`                                                      |\n| `gso`     | `FORGIT_SHOW_GIT_OPTS`                                                      |\n| `grh`    | `FORGIT_RESET_HEAD_GIT_OPTS`                                                |\n| `gcf`    | `FORGIT_CHECKOUT_FILE_GIT_OPTS`                                             |\n| `gcb`    | `FORGIT_CHECKOUT_BRANCH_GIT_OPTS`, `FORGIT_CHECKOUT_BRANCH_BRANCH_GIT_OPTS` |\n| `gbd`    | `FORGIT_BRANCH_DELETE_GIT_OPTS`                                             |\n| `gct`    | `FORGIT_CHECKOUT_TAG_GIT_OPTS`                                              |\n| `gco`    | `FORGIT_CHECKOUT_COMMIT_GIT_OPTS`                                           |\n| `grc`    | `FORGIT_REVERT_COMMIT_GIT_OPTS`                                             |\n| `gss`    | `FORGIT_STASH_SHOW_GIT_OPTS`                                                |\n| `gsp`    | `FORGIT_STASH_PUSH_GIT_OPTS`                                                |\n| `gclean` | `FORGIT_CLEAN_GIT_OPTS`                                                     |\n| `grb`    | `FORGIT_REBASE_GIT_OPTS`                                                    |\n| `gbl`    | `FORGIT_BLAME_GIT_OPTS`                                                     |\n| `gfu`    | `FORGIT_FIXUP_GIT_OPTS`                                                     |\n| `gcp`    | `FORGIT_CHERRY_PICK_GIT_OPTS`                                               |\n\n## pagers\n\nForgit will use the default configured pager from git (`core.pager`,\n`pager.show`, `pager.diff`) but can be altered with the following environment\nvariables:\n\n| Use case                 | Option                    | Fallbacks to                                      |\n| ------------------------ | ------------------------- | ------------------------------------------------- |\n| common pager             | `FORGIT_PAGER`            | `git config core.pager` _or_ `cat`                |\n| pager on `git show`      | `FORGIT_SHOW_PAGER`       | `git config pager.show` _or_ `$FORGIT_PAGER`      |\n| pager on `git diff`      | `FORGIT_DIFF_PAGER`       | `git config pager.diff` _or_ `$FORGIT_PAGER`      |\n| pager on `git blame`     | `FORGIT_BLAME_PAGER`      | `git config pager.blame` _or_ `$FORGIT_PAGER`     |\n| pager on `gitignore`     | `FORGIT_IGNORE_PAGER`     | `bat -l gitignore --color always` _or_ `cat`      |\n| pager on `gitatrributes` | `FORGIT_ATTRIBUTES_PAGER` | `bat -l gitattributes --color always` _or_ `cat`  |\n| git log format           | `FORGIT_GLO_FORMAT`       | `%C(auto)%h%d %s %C(black)%C(bold)%cr%reset`      |\n\n## fzf options\n\nYou can add default fzf options for `forgit`, including keybindings, layout, etc.\n(No need to repeat the options already defined in `FZF_DEFAULT_OPTS`)\n\n``` bash\nexport FORGIT_FZF_DEFAULT_OPTS=\"\n--exact\n--border\n--cycle\n--reverse\n--height '80%'\n\"\n```\n\nCustomizing fzf options for each command individually is also supported:\n\n| Command  | Option                            |\n|----------|-----------------------------------|\n| `ga`     | `FORGIT_ADD_FZF_OPTS`             |\n| `glo`    | `FORGIT_LOG_FZF_OPTS`             |\n| `grl`    | `FORGIT_REFLOG_FZF_OPTS`          |\n| `gi`     | `FORGIT_IGNORE_FZF_OPTS`          |\n| `gat`    | `FORGIT_ATTRIBUTES_FZF_OPTS`      |\n| `gd`     | `FORGIT_DIFF_FZF_OPTS`            |\n| `gso`    | `FORGIT_SHOW_FZF_OPTS`            |\n| `grh`    | `FORGIT_RESET_HEAD_FZF_OPTS`      |\n| `gcf`    | `FORGIT_CHECKOUT_FILE_FZF_OPTS`   |\n| `gcb`    | `FORGIT_CHECKOUT_BRANCH_FZF_OPTS` |\n| `gbd`    | `FORGIT_BRANCH_DELETE_FZF_OPTS`   |\n| `gct`    | `FORGIT_CHECKOUT_TAG_FZF_OPTS`    |\n| `gco`    | `FORGIT_CHECKOUT_COMMIT_FZF_OPTS` |\n| `grc`    | `FORGIT_REVERT_COMMIT_FZF_OPTS`   |\n| `gss`    | `FORGIT_STASH_FZF_OPTS`           |\n| `gsp`    | `FORGIT_STASH_PUSH_FZF_OPTS`      |\n| `gclean` | `FORGIT_CLEAN_FZF_OPTS`           |\n| `grb`    | `FORGIT_REBASE_FZF_OPTS`          |\n| `gbl`    | `FORGIT_BLAME_FZF_OPTS`           |\n| `gfu`    | `FORGIT_FIXUP_FZF_OPTS`           |\n| `gcp`    | `FORGIT_CHERRY_PICK_FZF_OPTS`     |\n\nComplete loading order of fzf options is:\n\n1. `FZF_DEFAULT_OPTS` (fzf global)\n2. `FORGIT_FZF_DEFAULT_OPTS` (forgit global)\n3. `FORGIT_CMD_FZF_OPTS` (command specific)\n\nExamples:\n\n- `ctrl-d` to drop the selected stash but do not quit fzf (`gss` specific).\n\n```sh\nexport FORGIT_STASH_FZF_OPTS='\n--bind=\"ctrl-d:reload(git stash drop $(cut -d: -f1 \u003c\u003c\u003c{}) 1\u003e/dev/null \u0026\u0026 git stash list)\"\n'\n```\n\n- `ctrl-e` to view the logs in a vim buffer (`glo` specific).\n\n```sh\nexport FORGIT_LOG_FZF_OPTS='\n--bind=\"ctrl-e:execute(echo {} |grep -Eo [a-f0-9]+ |head -1 |xargs git show |vim -)\"\n'\n```\n\n## other options\n\n| Option                      | Description                               | Default                                       |\n|-----------------------------|-------------------------------------------|-----------------------------------------------|\n| `FORGIT_LOG_FORMAT`         | git log format                            | `%C(auto)%h%d %s %C(black)%C(bold)%cr%Creset` |\n| `FORGIT_PREVIEW_CONTEXT`    | lines of diff context in preview mode     | 3                                             |\n| `FORGIT_FULLSCREEN_CONTEXT` | lines of diff context in full-screen mode | 10                                            |\n| `FORGIT_DIR_VIEW`           | command used to preview directories       | `tree` if available, otherwise `find`         |\n\n# 📦 Optional dependencies\n\n- [`delta`](https://github.com/dandavison/delta) / [`diff-so-fancy`](https://github.com/so-fancy/diff-so-fancy): For better human-readable diffs.\n\n- [`bat`](https://github.com/sharkdp/bat.git): Syntax highlighting for `gitignore` and `gitattributes`.\n\n- [`emoji-cli`](https://github.com/wfxr/emoji-cli): Emoji support for `git log`.\n\n- [`tree`](https://gitlab.com/OldManProgrammer/unix-tree): Directory tree view for `gclean`.\n\n# Completions\n\n## Bash\n\n- Put [`completions/git-forgit.bash`](https://github.com/wfxr/forgit/blob/main/completions/git-forgit.bash) in\n  `~/.local/share/bash-completion/completions` to have bash tab completion for `git forgit` and configured git aliases.\n- Source [`completions/git-forgit.bash`](https://github.com/wfxr/forgit/blob/main/completions/git-forgit.bash) explicitly to have\n  bash tab completion for forgit shell functions and aliases (e.g., `gcb \u003ctab\u003e` completes branches).\n\n## Zsh\n\n- Put [`completions/_git-forgit`](completions/_git-forgit) in a directory in your `$fpath` (e.g., `/usr/share/zsh/site-functions`) to have zsh tab completion for `git forgit` and configured git aliases, as well as shell command aliases, such as `forgit::add` and `ga`\n\nIf you're having issues after updating, and commands such as `forgit::add` or aliases `ga` aren't working, remove your completions cache and restart your shell.\n\n```zsh\n\u003e rm ~/.zcompdump\n\u003e zsh\n```\n\n# 💡 Tips\n\n- Most of the commands accept optional arguments (e.g., `glo develop`, `glo f738479..188a849b -- main.go`, `gco main`).\n- `gd` supports specifying revision(e.g., `gd HEAD~`, `gd v1.0 README.md`).\n- Call `gi` or `gat` with arguments to get the wanted `.gitignore`/`.gitattributes` contents directly(e.g., `gi cmake c++`).\n\n# 📃 License\n\n[MIT](https://wfxr.mit-license.org/2017) (c) Wenxuan Zhang\n","funding_links":[],"categories":["Shell","Plugins","VCS","zsh","cli","For Developers","\u003ca name=\"git\"\u003e\u003c/a\u003eGit and accessories","Git"],"sub_categories":["ZSH on Windows","VCS History Management","Zinit (née zplugin)","Directory Navigation","Shell Utils","Git Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwfxr%2Fforgit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwfxr%2Fforgit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwfxr%2Fforgit/lists"}