A collection of useful git commands.
git clone https://github.com/ricardobeat/git-commands ~/.git-commands echo export PATH="~/.git-commands:$PATH" > ~/.profile
Output number of lines added / removed by
★ git author-stats Pietro Added: 116461, removed: 80818, total: 35643, modified: 197279 lines
Delete all branches that have already been merged into master.
Search for commits that include
string in their change set.
★ git dig new_feature_flag
Find files containing the search strings, in any order. For example:
★ git find modules main modal js main/lib/modules/modal/index.js
Display authors of files containing
string, ranked by frequency.
homebrew-core ★ git grep-rank dumb 10 matches for 'dumb' 5 s172262 3 Dominyk Tiller 1 Zhiming Wang 1 Fred McCann 1 David Holm
Simultaneously open all changed files using
$EDITOR, according to
git status. Lets you pick up
work in progress without depending on editor 'projects' state.
Display ranking of authors by number of commits + extra stats.
While working in a branch,
master, then rebase current branch on top of that. Use
to keep in sync with main development branch.
Delete remote branch, then push again. To work around
-f restrictions. Bails out if branch name is
Run GC + prune. Optimized for a huge (~100k files) repository, might not work for you.
git size [commit]
Show the size in bytes introduced (or removed) by a specific commit. Accepts any ref identifier
that git understands: hashes,
git snapshot [note]
Create a named stash, including an optional text note. This will not be featured in the stash list, only in reflog (and will be GCed at some point). Use as safety checkpoints while furiously changing code.
git sort [hashes]
Sort a list of SHA1 commit hashes by their ordering in the history. Defaults to looking at the past 1000 commits,
can be overriden by setting the
N environment var.
git sort 2d5cbab63ba cf39029de04 61bdf05bbc1 cf39029de04 61bdf05bbc1 2d5cbab63ba cat shas.txt | git sort cf39029de04 61bdf05bbc1 ...
git stash pop will refuse to apply over a dirty tree, even when an automatic merge is possible.
stash-merge command will create a new stash object from your state and try to
merge them together.
In chase the the merge fails you still have both in stash list.