
bit is an experimental modernized git CLI built on top of git that provides happy defaults and other niceties:
bit add or bit checkoutbit sync that vastly simplify your workflow bit release & bit infobit --debug.--- New ---
bit pr view and checkout pull requests from Github (Requires GitHub CLI)bit update--- Coming Soon ---
- bit anticipates when you'll need to type git status and will display it proactively
- bit fix for all the times you did something you really wish you didn't
- improved bit sync
- QOL improvements when switching branches or deleting tags
Click here for installation instructions
run bit update
Customization:
- BIT_THEME=inverted
- BIT_THEME=monochrome



Create a new commit (roughly equivalent to git commit -am "commit message")
bit save [commit message]
Save your changes to the current branch [amends current commit when ahead of origin]
(roughly equivalent to git commit -a or conditionally git commit -a --amend --no-edit)
bit save
Synchronize your changes to origin branch (Beta)
(roughly equivalent to git pull -r; git push)
bit sync
(roughly equivalent to git pull -r; git push; git pull -r origin master; git push)
bit sync origin master
You have access to ALL git commands as well.
bit commit -m "I can still use git commands", bit pull -r origin master
bit switch example-branch
Branch does not exist. Do you want to create it? Y/n
yes
Switched to a new branch 'example-branch'
[Makes some changes]
bit save "add important feature"
for multiline commits simply don't put the final quote until you're done typing
[fix an error for important feature]
bit save
[push changes to origin]
bit sync
[two days later confirm your branch is in sync with origin branch]
bit sync
[rebase your changes from origin master]
bit sync origin master
If you would like to support the development of bit, consider sponsoring me.
Thanks to Gitless, git-extras, researchers in the field and of course the developers of git itself! Also, thanks to go-prompt for the interactive prompt library
v1.2
- [X] enhancement: add bit sw as alias for bit switch
- [X] fix: bit save will amend commits only when the commit doesn't exist in any other branch
v1.1
- [X] enhancement: enable interactive prompt (keep bit running) with env variable: BIT_INTERACTIVE=true
v1.0
- [X] enhancement: significantly more autocompletions
- [X] enhancement: use fuzzy search for branch suggestions
- [X] refactor: completions now represented in tree data structure
- [X] fix: bit save no longer shows debug error outside debug mode
- [X] fix: use --is-inside-work-tree to determine whether inside a git repo
- [X] fix: gracefully handle bad release tags for bit release bump
- [X] fix: bit pr not listing PR in some cases
- [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
v0.9
- [X] enhancement: improve bit sync behavior including bit sync <upstream> <branch>
- [X] enhancement: bit sync provides a rebase option for diverged branches- [X] fix: enable compatibility with non-english languages
- [X] enhancement:bit merge` suggestions
v0.8
- [X] feature: checkout Pull Requests from github (requires gh pr list to work)
- [X] enhancement: install with homebrew: brew install bit-git
- [X] enhancement: Color themes BIT_THEME=inverted or BIT_THEME=monochrome light terminal backgrounds
- [X] fix: bit clone outside a git repo
- [X] enhancement: bit is now a single binary
v0.7
- [X] feature: update your cli with bit update
v0.6 - [X] fix: improved git compatibility for older versions of git - [X] feature: emacs key binds - [X] feature: relative and absolute branch times - [X] feature: completions for rebase & log - [X] enhancement: smarter suggestions - [X] fix: show proper descriptions for some flags - [X] fix: prevent panic on classical tab completion for some users
v0.5
bit switch, bit co, bit checkout will show prompt v0.4
bit syncgo binaries are self-contained so uninstalling simply requires deleting the binary(ies)
rm `which bit`
If you ran bit complete optionally remove a line from your bash_profile, .zshrc etc.
complete -o nospace -C /Users/{_USER_}/go/bin/bit bit
cURL (Simplest way to install)Like bit? Sponsor bit for $5
```shell script curl -sf https://gobinaries.com/chriswalz/bit | sh; bit complete; echo "Type bit then press to show interactive prompt" bit;
To overwrite installation location
`export PREFIX=/opt/bit/git && mkdir -p ${PREFIX} ## optional: override default install location /usr/local/bin`
`bit`, `bit checkout` & `bit switch` will show interactive prompts after you press ENTER
### using `go` (Harder way to install)
*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*
```shell script
export GOPATH=$HOME/go
export GOBIN=$(go env GOPATH)/bin
```shell script GO111MODULE=on go get github.com/chriswalz/bit@latest; bit complete
### using `Homebrew` (For MacOS users)
```shell script
brew install bit-git
bit complete
bit
Not working? Try brew doctor
MacPorts (For MacOS users)```shell script sudo port selfupdate sudo port install bit
#### using `go` (For Windows Users)
```shell script
go env -w GO111MODULE=on
# if latest is not working, replace it with the latest tag found here https://github.com/chriswalz/bit/releases
go get github.com/chriswalz/bit@latest;
bit
Chocolatey (For Windows Users)```shell script choco install bit-git
#### using `zinit`
```shell script
zinit ice lucit wait"0" as"program" from"gh-r" pick"bit"
zinit light "chriswalz/bit"
Note: On Windows only the interactive prompt completion works not classic tab completion
For building a stable version from source, use the bit package
For building the latest git version from source, use the bit-git package
Note: These Packages are community-driven and not offically published my the bit maintainer.
Verify installation with:
bit
Dependencies: Git
Platform Support: - iTerm2 (macOS) - Terminal.app (macOS) - Command Prompt (Windows) - WSL/Windows Subsystem for Linux (Windows) - gnome-terminal (Ubuntu)