gitz
gitz copied to clipboard
🗜 Tiny useful git commands, some dangerous 🗜
🗜 gitz - git commands for rapid development 🗜
This is a collection of seventeen git utilities aimed at people doing rapid development using Git.
Gitz is for two types of users - quality-obsessed individuals who relentlessly manicure their pull requests until every byte is in the right place; and ultra-rapid developers who want to generate large features quickly while taking advantage of continuous integration.
Most of these utilities only exist here, one came from a chat on Reddit and I don't know where one of them came from.
Four of them are written in Bash, the rest use Python 3. They have been tested on Mac OS/X (Darwin) and on Ubuntu, and will likely work on any Unix-like operating system.
How to install
Use pip <https://pypi.org/project/pip/>_:
.. code-block:: bash
pip3 install gitz
Or simply download
this directory <https://github.com/rec/gitz/zipball/master/>_
and make sure it's in your shell's PATH - gitz has no
external dependencies.
Getting help
This page contains a summary and a link to a manual page for each command. From
the terminal, use -h flag like this: git new -h or use man like
this: man git-new.
When to use gitz
-
At the start of a session
-
git newsafely creates fresh branches from upstream -
git updatefor each branch, rebases from upstream and force-pushes
-
-
During development
-
git stis a more compact and prettiergit status -
git whenshows you when documents were last changed
-
-
During rapid development
git infercommits files with an automatically generated message - great for committing tiny changes for later rebasing down
-
While cleaning up a branch for review
-
git permutepermutes, squashes or removes commits in the current branch -
git splitsplit one or more commits, perhaps with the staging area, into many small individual commits, one per file
-
-
During repository maintenance
-
git rotaterotates through all branches -
git copy,git delete, andgit renamework on both local and upstream branches
-
-
Working with continuous integration
git stripepushes a sequence of commits to individual remote branches where CI can find and test them
The movie
.. figure:: https://asciinema.org/a/XwakAaMsMzKg4hIAJa18iiNac.png :target: https://asciinema.org/a/XwakAaMsMzKg4hIAJa18iiNac?autoplay=1&theme=solarized-light&loop=1 :align: center :alt: The whole gitz movie :width: 430 :height: 402
The gitz commands
Safe commands
Informational commands that don't change your repository
git gitz <doc/git-gitz.rst>_
Print information about the gitz git commands
git go <doc/git-go.rst>_
Open a browser page for the current repo
git infer <doc/git-infer.rst>_
Commit changes with an automatically generated message
(from https://github.com/moondewio/git-infer)
git multi-pick <doc/git-multi-pick.rst>_
Cherry-pick multiple commits, with an optional squash
git new <doc/git-new.rst>_
Create and push new branches
git rot <doc/git-rot.rst>_
Rotate through branches in a Git repository
git st <doc/git-st.rst>_
Colorful, compact git status
git stripe <doc/git-stripe.rst>_
Push a sequence of commit IDs to a remote repository
git when <doc/git-when.rst>_
For each file, show the most recent commit that changed it.
Dotfiles are ignored by default.
Dangerous commands that delete, rename or overwrite branches
git copy <doc/git-copy.rst>_
Copy a git branch locally and remotely
git delete <doc/git-delete.rst>_
Delete one or more branches locally and remotely
git rename <doc/git-rename.rst>_
Rename a git branch locally and remotely
By default, the branches develop and master are protected -
they are not allowed to be copied to, renamed, or deleted.
You can configure this in three ways:
-
setting the
--all/-aflag ignore protected branches entirely -
setting the environment variable
GITZ_PROTECTED_BRANCHESoverrides these defaults -
setting a value for the keys
PROTECTED_BRANCHESin the file .gitz.json in the top directory of your Git project has the same effect
Dangerous commands that rewrite history
Slice, dice, shuffle and split your commits.
These commands are not intended for use on a shared or production branch, but can significantly speed up rapid development on private branches.
git adjust <doc/git-adjust.rst>_
Amend any commit, not just the last
git permute <doc/git-permute.rst>_
Reorder and delete commits in the current branch
git split <doc/git-split.rst>_
Split a range of commits into many single-file commits
git update <doc/git-update.rst>_
Update branches from a reference branch