All Projects → chriswalz → Bit

chriswalz / Bit

Licence: apache-2.0
Bit is a modern Git CLI

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Bit

Sharprompt
Interactive command line interface toolkit for C#
Stars: ✭ 197 (-96.56%)
Mutual labels:  cli, prompt, interactive
Survey
A golang library for building interactive and accessible prompts with full support for windows and posix terminals.
Stars: ✭ 2,843 (-50.32%)
Mutual labels:  cli, prompt, interactive
Go Prompt
Building powerful interactive prompts in Go, inspired by python-prompt-toolkit.
Stars: ✭ 4,255 (-25.65%)
Mutual labels:  cli, prompt, interactive
Ink
🌈 React for interactive command-line apps
Stars: ✭ 17,505 (+205.87%)
Mutual labels:  cli, interactive
yargs-interactive
Interactive support for yargs
Stars: ✭ 40 (-99.3%)
Mutual labels:  interactive, prompt
Graphqurl
curl for GraphQL with autocomplete, subscriptions and GraphiQL. Also a dead-simple universal javascript GraphQL client.
Stars: ✭ 3,012 (-47.37%)
Mutual labels:  cli, autocomplete
requestty
An easy-to-use collection of interactive cli prompts inspired by Inquirer.js.
Stars: ✭ 158 (-97.24%)
Mutual labels:  interactive, prompt
Php Console
🖥 PHP CLI application library, provide console argument parse, console controller/command run, color style, user interactive, format information show and more. 功能全面的PHP命令行应用库。提供控制台参数解析, 命令运行,颜色风格输出, 用户信息交互, 特殊格式信息显示
Stars: ✭ 310 (-94.58%)
Mutual labels:  cli, interactive
Docker Shell
A simple interactive prompt for docker
Stars: ✭ 299 (-94.78%)
Mutual labels:  prompt, interactive
Caporal.js
A full-featured framework for building command line applications (cli) with node.js
Stars: ✭ 3,279 (-42.7%)
Mutual labels:  cli, autocomplete
Ferret
Declarative web scraping
Stars: ✭ 4,837 (-15.48%)
Mutual labels:  cli, hacktoberfest2021
enquirer
Stylish, intuitive and user-friendly prompts, for Node.js. Used by eslint, webpack, yarn, pm2, pnpm, RedwoodJS, FactorJS, salesforce, Cypress, Google Lighthouse, Generate, tencent cloudbase, lint-staged, gluegun, hygen, hardhat, AWS Amplify, GitHub Actions Toolkit, @airbnb/nimbus, and many others! Please follow Enquirer's author: https://github.…
Stars: ✭ 6,523 (+13.98%)
Mutual labels:  interactive, prompt
CLI-Autocomplete
Cross-platform flexible autocomplete library for your CLI applications.
Stars: ✭ 21 (-99.63%)
Mutual labels:  autocomplete, prompt
Picocli
Picocli is a modern framework for building powerful, user-friendly, GraalVM-enabled command line apps with ease. It supports colors, autocompletion, subcommands, and more. In 1 source file so apps can include as source & avoid adding a dependency. Written in Java, usable from Groovy, Kotlin, Scala, etc.
Stars: ✭ 3,286 (-42.58%)
Mutual labels:  cli, autocomplete
inquire
A Rust library for building interactive prompts
Stars: ✭ 419 (-92.68%)
Mutual labels:  interactive, prompt
Bullet
🚅 Interactive prompts made simple. Build a prompt like stacking blocks.
Stars: ✭ 3,257 (-43.09%)
Mutual labels:  cli, interactive
Add Gitignore
An interactive CLI tool that adds a .gitignore to your projects.
Stars: ✭ 467 (-91.84%)
Mutual labels:  cli, interactive
Xonsh
🐚 Python-powered, cross-platform, Unix-gazing shell
Stars: ✭ 5,327 (-6.92%)
Mutual labels:  cli, prompt
Cli Prompt
Allows you to prompt for user input on the command line, and optionally hide the characters they type
Stars: ✭ 228 (-96.02%)
Mutual labels:  cli, prompt
Npm Upgrade
Interactive CLI utility to easily update outdated NPM dependencies
Stars: ✭ 245 (-95.72%)
Mutual labels:  cli, interactive

Twitter Follow

Tweet

bit
GitHub release (latest SemVer) Version Version Version

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 or bit 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
  • Interactive prompt with env variable: BIT_INTERACTIVE=true

--- 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
Common commands at your finger tips

bit

Commit, bump a tag and push with a single command

bit

Instant git statistics and config information

bit

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

  1. Think in the age of the cloud
  2. Embed the spirit of modern day workflows
  3. Favor simplicity over complexity
  4. Bit should have happy defaults
  5. 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

Changelog

v1.1.2

  • enhancement: add bit sw as alias for bit switch
  • fix: bit save will amend commits only when the commit doesn't exist in any other branch v1.1
  • enhancement: enable interactive prompt (keep bit running) with env variable: BIT_INTERACTIVE=true

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
  • fix: bit pr not listing PR in some cases
  • 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

  • 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 or BIT_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

using AUR (For Arch Linux Users)

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)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].