README
bit
is an experimental modernized git CLI built on top of git that provides happy defaults and other niceties:
- command and flag suggestions to help you navigate the plethora of options git provides you
- autocompletion for files and branch names when using
bit add
orbit checkout
- automatic fetch and branch fast-forwarding reducing the likelihood of merge conflicts
- suggestions work with git aliases
- new commands like
bit sync
that vastly simplify your workflow - commands from git-extras such as
bit release
&bit info
- fully compatible with git allowing you to fallback to git if need be.
- get insight into how bit works using
bit --debug
.
--- New ---
-
bit pr
view and checkout pull requests from Github (Requires GitHub CLI) - easily update bit using
bit update
- single binary
- much more suggestions available! (Roughly 10x more)
- Install with homebrew & macports
--- 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
Installation
Click here for installation instructions
Update
run bit update
Customization:
BIT_THEME=inverted
BIT_THEME=monochrome
Bit specific command Usage
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
Example Workflow
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
Donate
If you would like to support the development of bit, consider sponsoring me.
Principles
- Think in the age of the cloud
- Embed the spirit of modern day workflows
- Favor simplicity over complexity
- Bit should have happy defaults
- Bit must be fully compatible with Git
Inspiration
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
News
- https://news.ycombinator.com/item?id=24751212
- https://www.tldrnewsletter.com/archives/20201007
- https://www.reddit.com/r/golang/comments/j5wggn/bit_an_experimental_git_cli_with_a_powerful/
- https://b.hatena.ne.jp/entry/s/github.com/chriswalz/bit
- https://news.hada.io/topic?id=2990
- https://twitter.com/newsycombinator/status/1315517850954727424
- https://forum.devtalk.com/t/bit-a-modernized-git-cli-written-in-go/3065
- https://gocn.vip/topics/11063
- https://golangweekly.com/issues/333
- https://archive.faabli.com/archive/2020-10-09
- https://www.wykop.pl/wpis/52945683/unknownews-wolanie-nie-dziala-zapisz-sie-lepiej-na/
- https://blog.csdn.net/a419240016/article/details/109178001
Changelog
v1.0
- enhancement: significantly more autocompletions
- enhancement: use fuzzy search for branch suggestions
- refactor: completions now represented in tree data structure
- fix: bit save no longer shows debug error outside debug mode
- fix: use --is-inside-work-tree to determine whether inside a git repo
- fix: gracefully handle bad release tags for
bit release bump
v0.9
- enhancement: improve bit sync behavior including
bit sync <upstream> <branch>
- enhancement: bit sync provides a rebase option for diverged branches`
- fix: enable compatibility with non-english languages
- enhancement:
bit merge
suggestions
v0.8
- feature: checkout Pull Requests from github (requires
gh pr list
to work) - enhancement: install with homebrew:
brew install bit-git
- enhancement: Color themes
BIT_THEME=inverted
orBIT_THEME=monochrome
light terminal backgrounds - fix: bit clone outside a git repo
- enhancement: bit is now a single binary
v0.7
- feature: update your cli with
bit update
v0.6
- fix: improved git compatibility for older versions of git
- feature: emacs key binds
- feature: relative and absolute branch times
- feature: completions for rebase & log
- enhancement: smarter suggestions
- fix: show proper descriptions for some flags
- fix: prevent panic on classical tab completion for some users
v0.5
-
bit switch
,bit co
,bit checkout
will show prompt - fix bit tab completion (bitcomplete)
- fix edge case where there is an invalid ref
- various minor fixes
- more completions
- better suggestion filtering
- absolute and relative times for branch suggestions
v0.4
- multiline support with Go Survey Library
- color mitigation to have roughly similar colors across OSs
- fix README go get installation instructions
- QOL improvements for
bit sync
How to uninstall
go 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
How to install
using cURL
(Simplest way to install)
Like bit? Sponsor bit for $5
curl -sf https://gobinaries.com/chriswalz/bit | sh;
bit complete;
echo "Type bit then press <ENTER> 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
export GOPATH=$HOME/go
export GOBIN=$(go env GOPATH)/bin
GO111MODULE=on go get github.com/chriswalz/bit@latest;
bit complete
using Homebrew
(For MacOS users)
brew install bit-git
bit complete
bit
Not working? Try brew doctor
using MacPorts
(For MacOS users)
sudo port selfupdate
sudo port install bit
using go
(For Windows Users)
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
using Chocolatey
(For Windows Users)
choco install bit-git
using zinit
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
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)
Documentation
Overview ¶
Copyright © 2020 Chris Walz <walz@reconbuddy.com>
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.