Giter VIP home page Giter VIP logo

zbg's Introduction

zbg

GitHub CI MPL-2.0 license

zbg (short for Zero Bullshit Git) is a CLI tool for using git efficiently.

Features

  • ✨ Prettier git status, git log and other commands
  • 🚀 Sane defaults to git commands that enforce good state of your local repository
  • 🌌 Achieving more by typing less
zbg status zbg log
zbg status zbg log

Note

zbg is developed and maintained in free time by volunteers. The development may continue for decades or may stop tomorrow. You can use GitHub Sponsorship to support the development of this project.

Install

ℹ️ Currently zbg can be installed only by building it from sources. Alternative installation methods may appear later.

From sources

  1. Clone the repository
    git clone [email protected]:chshersh/zbg.git
    cd zbg
  2. Build the executable
    opam install . --deps-only --with-doc --with-test
    dune build
  3. Copy the executable under your location in $PATH, e.g.:
    cp -f ./_build/default/bin/main.exe ~/.local/bin/zbg
  4. Run zbg --help

Configure

Set your GitHub username in the user.login field of your global .gitconfig:

git config --global user.login my-github-login

Quick start guide

This section contains example of various usage scenarios for zbg.

Developing a new feature

A typical workflow for developing a new feature may look like this:

$ zbg switch           # Switch to the main branch and  sync it

$ zbg new Feature 2.0  # Create a new branch; 'zbg switch' made sure
                       # we start developing from the latest version

<coding>               # The fun part!

$ zbg status           # Check quick summary of your changes

$ zbg commit           # Commit all local changes and write description

$ zbg push             # Push the branch

Experimenting, saving and re-applying

While you were on vacation, a coworker of yours pushed some changes to your branch, and now your want to sync their work locally and do some experimenting.

$ zbg sync     # Get the latest changes from your branch

$ zbg rebase   # Rebase on top of the main branch if anything changed

<start developing the experiment>

$ zbg clear    # Nah, scrap that, bad idea

<coding>

$ zbg stash    # Argh, too early, save and do the other thing

<coding>

$ zbg status   # Check what you've done

$ zbg commit   # Commit changes

$ zbg unstash  # Now apply your stashed changes

$ zbg commit   # Commit changes again

$ zbg push -f  # Push changes for the review

All commands

The below table describes all zbg commands and the corresponding git explanations.

Note

The table below uses default or example arguments to all commands

zbg git
zbg clear git add .
git reset --hard
zbg commit My description git add .
git commit --message="My description"
zbg log git log <long custom formatting string>
zbg new Branch name git checkout -b my-github-username/Branch-name
zbg push git push --set-upstream origin <current-branch>
zbg rebase git fetch origin main
git rebase origin/main
zbg stash git stash push --include-untracked
zbg status git status (but zbg is prettier)
zbg switch git checkout main
git pull --ff-only --prune
zbg sync git pull --ff-only origin <current-branch>
zbg sync -f git fetch origin <current-branch>
git reset --hard origin/<current-branch>
zbg tag v0.1.0 git tag --annotate %s --message='Tag for the v0.1.0 release'
git push origin --tags
zbg tag -d v0.1.0 git tag --delete v0.1.0
git push --delete origin v0.1.0
zbg uncommit git reset HEAD~1
zbg unstash git stash pop

The following tables provides the comparison of zbg and git outputs.

zbg git
zbg status
zbg status
git status
git status
zbg log
zbg log
git log
git log

Warning

zbg is not a full git replacement! It provides a streamlined workflow for the most common case but you may still need to use git occasionaly.

For contributors

Check CONTRIBUTING.md for contributing guidelines.

Development

First time: Install all dependencies with opam:

opam install . --deps-only --with-doc --with-test

To build the project locally, use dune:

dune build

To run tests:

dune runtest

Empty output means that all tests are passing.

Troubleshooting

If you see the following error when running zbg switch:

$ zbg switch
fatal: ambiguous argument 'origin/HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

run the following command to sync with the remote and set the origin/HEAD ref locally:

git remote set-head origin -a

zbg's People

Contributors

chshersh avatar paulpatault avatar tekknoid avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.