{"id":13393493,"url":"https://github.com/chriswalz/bit","last_synced_at":"2025-05-14T01:07:28.817Z","repository":{"id":37708920,"uuid":"294556570","full_name":"chriswalz/bit","owner":"chriswalz","description":"Bit is a modern Git CLI","archived":false,"fork":false,"pushed_at":"2023-02-21T19:06:59.000Z","size":542,"stargazers_count":6084,"open_issues_count":32,"forks_count":108,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-04-03T06:06:10.315Z","etag":null,"topics":["autocomplete","bit","cli","git","golang","hacktoberfest","hacktoberfest2021","interactive","prompt"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chriswalz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":["chriswalz"]}},"created_at":"2020-09-11T00:50:18.000Z","updated_at":"2025-04-02T18:57:59.000Z","dependencies_parsed_at":"2024-01-06T00:38:29.253Z","dependency_job_id":"b6ea0c33-4903-4d57-a45d-dddab91f01d0","html_url":"https://github.com/chriswalz/bit","commit_stats":{"total_commits":315,"total_committers":20,"mean_commits":15.75,"dds":0.06984126984126982,"last_synced_commit":"b70261c36b30b8118fbe5269a1cea698ff388700"},"previous_names":[],"tags_count":131,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriswalz%2Fbit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriswalz%2Fbit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriswalz%2Fbit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriswalz%2Fbit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chriswalz","download_url":"https://codeload.github.com/chriswalz/bit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248202099,"owners_count":21064264,"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":["autocomplete","bit","cli","git","golang","hacktoberfest","hacktoberfest2021","interactive","prompt"],"created_at":"2024-07-30T17:00:54.184Z","updated_at":"2025-04-10T10:48:02.918Z","avatar_url":"https://github.com/chriswalz.png","language":"Go","readme":"![Twitter Follow](https://img.shields.io/twitter/follow/chriswalz___?style=social)\n\n[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Bit%20-%20a%20modern%20git%20cli%20\u0026url=https://github.com/chriswalz/bit\u0026hashtags=bit,git,cli,developers)\n\u003cp align=\"center\"\u003e\n\u003cimg\n    src=\"https://user-images.githubusercontent.com/6971318/97790948-af52f200-1ba3-11eb-8b9e-a614e44da12c.gif\"\n    width=\"600px\" border=\"0\" alt=\"bit\"\u003e\n\u003cbr\u003e\n\u003cimg alt=\"GitHub release (latest SemVer)\" src=\"https://img.shields.io/github/v/release/chriswalz/bit?color=gree\"\u003e\n\u003ca href=\"https://goreportcard.com/report/github.com/chriswalz/bit\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/chriswalz/bit\" alt=\"Version\"\u003e\u003c/a\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/github/go-mod/go-version/chriswalz/bit\" alt=\"Version\"\u003e\u003c/a\u003e\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/chriswalz/bit?style=social\" alt=\"Version\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n`bit` is an experimental modernized git CLI built on top of git that provides happy defaults and other niceties:\n\n- command and **flag suggestions** to help you navigate the plethora of options git provides you\n- autocompletion for files and branch names when using \n`bit add` or `bit checkout`\n- automatic fetch and **branch fast-forwarding** reducing the likelihood of merge conflicts \n- suggestions **work with git aliases**\n- new commands like `bit sync` that vastly simplify your workflow \n- commands from **git-extras** such as `bit release` \u0026 `bit info`\n- **fully compatible with git** allowing you to fallback to git if need be.  \n- get insight into how bit works using `bit --debug`.\n\n--- **New** ---\n\n- [X] `bit pr` view and checkout pull requests from Github (Requires GitHub CLI)\n- [X] easily update bit using `bit update`\n- [X] single binary\n- [X] much more suggestions available! (Roughly 10x more)\n- [X] Install with homebrew \u0026 macports\n- [X] Interactive prompt with env variable: BIT_INTERACTIVE=true\n\n--- **Coming Soon** ---\n- bit anticipates when you'll need to type git status and will display it proactively\n- `bit fix` for all the times you did something you really wish you didn't\n- improved `bit sync`\n- QOL improvements when switching branches or deleting tags\n\n## Installation\n\nClick [here](#how-to-install) for installation instructions\n\n## Update\n\nrun `bit update` \n\nCustomization: \n- `BIT_THEME=inverted`\n- `BIT_THEME=monochrome`\n\n###### Common commands at your finger tips \n\n\u003cp align=\"center\"\u003e\n\u003cimg\n    src=\"https://user-images.githubusercontent.com/6971318/95157964-6eb0b600-0768-11eb-8f8a-075e2987fde8.gif\"\n    width=\"600px\" border=\"0\" alt=\"bit\"\u003e\n\u003cbr\u003e\n\u003c/p\u003e\n\n###### Commit, bump a tag and push with a single command \n\n\u003cp align=\"center\"\u003e\n\u003cimg\n    src=\"https://user-images.githubusercontent.com/6971318/95157973-753f2d80-0768-11eb-8ef6-31239c76d305.gif\"\n    width=\"600px\" border=\"0\" alt=\"bit\"\u003e\n\u003cbr\u003e\n\u003c/p\u003e\n\n###### Instant git statistics and config information \n\n\u003cp align=\"center\"\u003e\n\u003cimg\n    src=\"https://user-images.githubusercontent.com/6971318/95158539-d7e4f900-0769-11eb-8530-9ffc4610a71a.gif\"\n    width=\"600px\" border=\"0\" alt=\"bit\"\u003e\n\u003cbr\u003e\n\u003c/p\u003e\n\n## Bit specific command Usage\n\nCreate a new commit *(roughly equivalent to `git commit -am \"commit message\"`)*\n\n`bit save [commit message]`\n\nSave your changes to the current branch [amends current commit when ahead of origin]\n*(roughly equivalent to `git commit -a` or conditionally `git commit -a --amend --no-edit`)*\n\n`bit save`\n\nSynchronize your changes to origin branch (Beta)\n*(roughly equivalent to `git pull -r; git push`)*\n\n`bit sync`\n\n*(roughly equivalent to `git pull -r; git push; git pull -r origin master; git push`)*\n`bit sync origin master`\n\nYou have access to ALL git commands as well.\n\n`bit commit -m \"I can still use git commands\"`, `bit pull -r origin master`\n\n## Example Workflow\n`bit switch example-branch`\nBranch does not exist. Do you want to create it? Y/n\n\nyes\n\nSwitched to a new branch 'example-branch'\n\n[Makes some changes]\n\n`bit save \"add important feature\"`\n\n*for multiline commits simply don't put the final quote until you're done typing*\n\n[fix an error for important feature]\n\n`bit save`\n\n[push changes to origin]\n\n`bit sync`\n\n[two days later confirm your branch is in sync with origin branch]\n\n`bit sync`\n\n[rebase your changes from origin master]\n\n`bit sync origin master`\n\n## Donate \n\nIf you would like to support the development of bit, consider [sponsoring](https://github.com/sponsors/chriswalz) me.\n\n\n## Principles \n\n1. Think in the age of the cloud\n1. Embed the spirit of modern day workflows\n1. Favor simplicity over complexity \n1. Bit should have happy defaults\n1. Bit must be fully compatible with Git\n\n## Inspiration\n\nThanks to [Gitless](https://gitless.com/), [git-extras](https://github.com/tj/git-extras), researchers in the field and of course the developers of `git` itself! Also, thanks to [go-prompt](https://github.com/c-bata/go-prompt) for the interactive prompt library\n\n## News \n- https://news.ycombinator.com/item?id=24751212\n- https://www.tldrnewsletter.com/archives/20201007\n- https://www.reddit.com/r/golang/comments/j5wggn/bit_an_experimental_git_cli_with_a_powerful/\n- https://b.hatena.ne.jp/entry/s/github.com/chriswalz/bit\n- https://news.hada.io/topic?id=2990\n- https://twitter.com/newsycombinator/status/1315517850954727424\n- https://forum.devtalk.com/t/bit-a-modernized-git-cli-written-in-go/3065\n- https://gocn.vip/topics/11063\n- https://golangweekly.com/issues/333\n- https://archive.faabli.com/archive/2020-10-09 \n- https://www.wykop.pl/wpis/52945683/unknownews-wolanie-nie-dziala-zapisz-sie-lepiej-na/\n- https://blog.csdn.net/a419240016/article/details/109178001\n\n## Changelog\nv1.1.2\n- [X] enhancement: add `bit sw` as alias for `bit switch`\n- [X] fix: bit save will amend commits only when the commit doesn't exist in any other branch\nv1.1\n- [X] enhancement: enable interactive prompt (keep bit running) with env variable: BIT_INTERACTIVE=true\n\nv1.0\n- [X] enhancement: significantly more autocompletions\n- [X] enhancement: use fuzzy search for branch suggestions\n- [X] refactor: completions now represented in tree data structure\n- [X] fix: bit save no longer shows debug error outside debug mode\n- [X] fix: use --is-inside-work-tree to determine whether inside a git repo\n- [X] fix: gracefully handle bad release tags for `bit release bump`\n- [X] fix: bit pr not listing PR in some cases\n- [X] security: fix vuln on Windows where an exe in a malicious repository could run arbitrary code. Special thanks to RyotaK - https://github.com/Ry0taK for identifying this issue\n\nv0.9\n- [X] enhancement: improve bit sync behavior including `bit sync \u003cupstream\u003e \u003cbranch\u003e`\n- [X] enhancement: bit sync provides a rebase option for diverged branches`\n- [X] fix: enable compatibility with non-english languages \n- [X] enhancement: `bit merge` suggestions\n\nv0.8\n- [X] feature: checkout Pull Requests from github (requires `gh pr list` to work)\n- [X] enhancement: install with homebrew: `brew install bit-git`\n- [X] enhancement: Color themes `BIT_THEME=inverted` or `BIT_THEME=monochrome` light terminal backgrounds\n- [X] fix: bit clone outside a git repo\n- [X] enhancement: bit is now a single binary\n\nv0.7\n- [X] feature: update your cli with `bit update`\n\nv0.6\n- [X] fix: improved git compatibility for older versions of git \n- [X] feature: emacs key binds \n- [X] feature: relative and absolute branch times\n- [X] feature: completions for rebase \u0026 log\n- [X] enhancement: smarter suggestions\n- [X] fix: show proper descriptions for some flags\n- [X] fix: prevent panic on classical tab completion for some users\n\nv0.5\n\n- [X] `bit switch`, `bit co`, `bit checkout` will show prompt \n- [X] fix bit tab completion (bitcomplete)\n- [X] fix edge case where there is an invalid ref\n- [X] various minor fixes\n- [X] more completions\n- [X] better suggestion filtering\n- [X] absolute and relative times for branch suggestions\n\nv0.4\n\n- [X] multiline support with Go Survey Library\n- [X] color mitigation to have roughly similar colors across OSs \n- [X] fix README go get installation instructions\n- [X] QOL improvements for `bit sync`\n\n## How to uninstall\n*go binaries are self-contained so uninstalling simply requires deleting the binary(ies)*\n\n```\nrm `which bit`\n```\n\nIf you ran `bit complete` optionally remove a line from your `bash_profile`, `.zshrc` etc.\n\n`complete -o nospace -C /Users/{_USER_}/go/bin/bit bit`\n\n## How to install\n\n### using `cURL` (Simplest way to install)\n\nLike bit? [Sponsor](https://github.com/sponsors/chriswalz) bit for $5\n\n```shell script\ncurl -sf https://gobinaries.com/chriswalz/bit | sh;\nbit complete;\necho \"Type bit then press \u003cENTER\u003e to show interactive prompt\"\nbit;\n```\n\nTo overwrite installation location\n\n`export PREFIX=/opt/bit/git \u0026\u0026 mkdir -p ${PREFIX}  ## optional: override default install location /usr/local/bin`\n\n\n`bit`, `bit checkout` \u0026 `bit switch` will show interactive prompts after you press ENTER\n\n### using `go`\n*Caveats: GOPATH and GOBIN need to be set. Verify with `go env`. If they are not set, add this to your .bashrc or .bash_profile etc. AND open new terminal*\n```shell script\nexport GOPATH=$HOME/go\nexport GOBIN=$(go env GOPATH)/bin\n```\n\n```shell script\ngo install github.com/chriswalz/bit@latest;\nbit complete\n```\n\n### using `Homebrew` (For MacOS users)\n\n```shell script\nbrew install bit-git\nbit complete\nbit\n```\n\nNot working? Try `brew doctor`\n\n### using `MacPorts` (For MacOS users)\n\n```shell script\nsudo port selfupdate\nsudo port install bit\n```\n\n\n#### using `go` (For Windows Users)\n```shell script\ngo env -w GO111MODULE=on\n\n# if latest is not working, replace it with the latest tag found here https://github.com/chriswalz/bit/releases\ngo get github.com/chriswalz/bit@latest; \nbit\n```\n\n#### using `Chocolatey` (For Windows Users)\n```shell script\nchoco install bit-git\n```\n\n#### using `zinit`\n```shell script\nzinit ice lucit wait\"0\" as\"program\" from\"gh-r\" pick\"bit\"\nzinit light \"chriswalz/bit\"\n```\n\n*Note*: On Windows only the interactive prompt completion works not classic tab completion\n\n#### using AUR (For Arch Linux Users)\nFor building a stable version from source, use the [`bit` package](https://aur.archlinux.org/packages/bit)\n\nFor building the latest git version from source, use the [`bit-git` package](https://aur.archlinux.org/packages/bit-git)\n\n*Note*: These Packages are community-driven and not offically published my the bit maintainer.\n\nVerify installation with:\n\n`bit`\n\nDependencies: Git\n\nPlatform Support:\n- iTerm2 (macOS)\n- Terminal.app (macOS)\n- Command Prompt (Windows)\n- WSL/Windows Subsystem for Linux (Windows)\n- gnome-terminal (Ubuntu)\n","funding_links":["https://github.com/sponsors/chriswalz"],"categories":["Go","Popular","开源类库","Open source library","\u003ca name=\"git\"\u003e\u003c/a\u003egit","应用相关","Tools","cli","golang","Uncategorized"],"sub_categories":["Git","Go","Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchriswalz%2Fbit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchriswalz%2Fbit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchriswalz%2Fbit/lists"}