GitHub - unixorn/git-extra-commands: A collection of git utilities, useful extra git scripts, tutorials and other useful articles.
git-add-match
Git: programmatic staging
Allows you to use expect to automatically stage hunks matching a search term
git-add-username-remote
Ryan Tomayko's dotfiles
Adds a remote for the current repository for the given GitHub username.
git-age
Kristoffer Gronlund's wiki
A git-blame viewer, written using PyGTK.
git-amend-all
John Wiegley's git scripts
Adds all modified and deleted files, except the new files and adds them to the recent commit by amending it.
git-attic
Leah Neukirchen's blog
Displays a list of deleted files in your repository. The output is designed to be copy and pasted: Pass the second field to git show to display the file contents, or just select the hash without ^ to see the commit where removal happened.
git-authors
Michael Markert's dotfiles (as git-changes)
List authors in the repository in descending commit-count order.
git-big-file
Mislav Marohnić's dotfiles
Show files in the repository larger than a threshold size.
git-branch-clean
@Hefeweizen
"branch clean" - rm various copies of a branch (e.g. foo-wip; origin/foo).
git-branch-date
Joe Block jpb@unixorn.net
List branches in commit-date order.
git-branch-diff
Joe Block jpb@unixorn.net
Diffs your current HEAD with the default branch of the origin remote.
git-branch-name
Joe Block jpb@unixorn.net
Prints the current branch name in automation-friendly format.
git-branch-rebaser
Vengada Rangaraju krangaraju@castlighthealth.com
Kicks off an interactive rebase of all the commits on your branch. Including pushed commits, so be careful.
git-branch-status
John Wiegley's git scripts
Colorized status report on all branches in your repository.
git-branches-that-touch
Mislav Marohnić's dotfiles
Shows which branches touch files under a path that are remote, unmerged, have a commit in the last six months and whose name doesn't start with 'enterprise-'.
git-capture-wip
@Hefeweizen
Capture in-progress file changes.
git-change-author
Michael Demmer in jut-io/git-scripts
Change one author/email in the history to another.
git-change-log
John Wiegley's git-scripts
Transform git log output into a complete Changelog for projects that haven't been maintaining one.
git-changes
Michael Markert's dotfiles
Symlink to git-authors. List authors in the repository in descending commit-count order.
git-checkout-branches
John Wiegley's git scripts
Checks out all remote branches.
git-checkout-by-date
Stack Overflow
Lets you checkout several files at once at the version specified by a date.
git-checkout-commit
From the fzf wiki
Uses fzf to checkout a commit, showing the commit diff as preview.
git-checkout-default-branch
I got tired of keeping track of which repositories use main, master or something else as default branch
Checks out the default branch of the origin remote so you don't have to remember which repositories use master, main or whatever.
git-checkout-pr
Based on gist.github.com/gnarf/5406589
Check out a PR locally.
git-checkout-preview
From the fzf wiki
Uses fzf to checkout a branch, showing what commits diverge between the branches.
git-checkout-tag
Joe Block jpb@unixorn.net
Check out a tag into a branch named after the tag.
git-children-of
John Wiegley's git-scripts
Shows the children of a given git commit.
git-churn
Gary Bernhardt's dotfiles
Show which files are getting changed most often in the repository.
git-clone-subset
Rodrigo Silva (MestreLion) linux@rodrigosilva.com
Uses git clone and git filter-branch to remove from the clone all files but the ones requested, along with their associated commit history.
git-comma
Leah Neukirchen's blog
Adds and commits a file in one command.
git-commit-browser
From the fzf wiki
Uses fzf to browse commit history.
git-conflicts
Seth Messer's bits and bobs repository
Show files with conflicts.
git-copy-branch-name
Zach Holman's dotfiles
Copy the current branch's name to the clipboard (macOS Only).
git-credit
git-credit-author
Zach Holman's dotfiles
git-current-branch
Joe Block jpb@unixorn.net
Prints the name of the current branch with no odd characters or formatting, mainly useful in automation scripts.
git-current-commit
Joe Block jpb@unixorn.net
Prints the hash of the current commit with no odd characters or formatting, mainly useful in automation scripts.
git-cut-branch
Ryan Tomayko's dotfiles
Create a new branch pointed at HEAD and reset the current branch to the head of its tracking branch.
git-delete-dangling-commits
Stack Overflow
Clean up dangling commits that are not on any branch.
git-delete-local-merged
From a deleted post by @tekkub
Delete all local branches that have been merged into HEAD.
git-delete-merged-branches
?
Purges all branches that have been merged to a target branch (defaults to branches merged to master).
git-delete-remote-branch
Joe Block jpb@unixorn.net
Delete a branch from a specified remote.
git-delete-squashed-and-merged-branches
Paul Irish's dotfiles
Purges all branches that have been squashed and merged to a target branch (defaults to branches merged to master). Requires pygithub.
git-delete-tag
Joe Block jpb@unixorn.net
Delete a tag, both locally and from the origin remote.
git-diff-last
Sebastian Schuberth
Show the last change made to a file in the repository.
git-divergence
Gary Bernhardt's dotfiles
Shows differences between local branch and its tracking branch.
git-edit-conflicts
Joe Block jpb@unixorn.net
Edit the files that are marked as conflicted during a merge/rebase in your $EDITOR/$VISUAL.
git-fetch-prs
Pretty sure I saw this on slack, but can't recall which one
Get all Pull Request branches from a given remote by refspec.
git-files
Jake Zimmerman's blog
List the files different between the current branch and $REVIEW_BRANCH, which if unset defaults to the repository's default branch.
git-find-dirty
Matthew McCullough's scripts repository.
git-flush
John Wiegley's git-scripts
Compact your repository by dropping all reflogs, stashes, and other cruft that may be bloating your pack files.
git-force-mtimes
John Wiegley's git-scripts
Sets modification times of all files in the repository their last change date based on git's log. Useful to avoid too new dates after a checkout confusing make or rake.
git-forest
Jan Engelhardt
Prints a text-based tree visualisation of your repository. Requires Git.pm.
git-functionlog
Joe Block jpb@unixorn.net
Allows you to get a git log of a particular function, not a file.
git-fzf-add
Fuzzy Finding in Bash with fzf
Use fzf to select files to add to git.
git-fzf-log-browser
Fuzzy Finding in Bash with fzf
Use fzf to browse the repository's git log.
git-fzf-pickaxe-browser
Fuzzy Finding in Bash with fzf
Use fzf to display a git log list that has been filtered with pickaxe for a search term.
git-fzf-reflog-browser
Fuzzy Finding in Bash with fzf
Use fzf to browse the repository's git reflog list that can be filtered by entering a fuzzy term at the prompt. Navigation up and down the hash list will preview the changes of each hash.
git-git
Joe Block jpb@unixorn.net
Typing git git foo will make git do a git foo instead of complaining.
git-github-open
?
Open GitHub file/blob page for FILE on LINE.
git-gitlab-mr
Noel Cower's gist
Open a merge request on GitLab.
git-history-graph
Stack Overflow
Pretty git log, single line per commit, with branch graphing.
git-ignored
?
Show files being ignored by git in the repository.
git-improved-merge
Mislav Marohnić's dotfiles
Sophisticated git merge with integrated CI check and automatic cleanup.
git-incoming
Michael Markert's dotfiles
Show commits in the tracking branch that are not in the local branch.
git-jump
Cowboy's dotfiles
Replays git commits by moving forward / backward through a branch's history.
git-latest-tag
Joe Block jpb@unixorn.net
Fetch tags from all remotes and show the most recent tag name.
git-lines
Neil Killeen nkilleen@castlighthealth.com
Gives you a list of author names with the number of lines last updated by that user in files in the current directory tree with the extension specified.
git-log-single-file
Joe Block jpb@unixorn.net
Show the log for a single file.
git-ls-branch-files
Joe Block
List files changed between a specified branch and the current branch.
git-ls-object-refs
Ryan Tomayko's dotfiles
Find references to an object with SHA1 in refs, commits, and trees. All of them.
git-maildiff
Sanjeev Kumar's blogpost
A simple git command to email diff in color to reviewer/ co-worker.
git-make-gitignore
#commandline-fu on coffeeops
Prints a language-specific .gitignore file using gitignore.io.
git-maxpack
John Wiegley's git-scripts
Compress a repository's pack files as much as possible.
git-merged-branches
Sergei Boiko's Git housekeeping tutorial: clean-up outdated branches in local and remote repositories article
Lists all branches that have been merged.
git-move-commits
Corey Oordt's git-scripts
git move-commits num-commits correct-branch moves the last n commits to correct-branch (creating it if necessary).
git-neck
Leah Neukirchen's blog
Show commits from the HEAD until the first branching point. Companion script for git-trail.
git-nuke
Zach Holman's dotfiles
Nukes a branch locally and on the origin remote.
git-object-deflate
Ryan Tomayko's dotfiles
Deflate an loose object file and write to standard output.
git-oldest-common-ancestor
Lee Dohm's dotfiles
Finds the oldest common ancestor commit between two branches.
git-open-jira
?
If the branch name starts with JIRAPROJECT-NNNN, will open that issue in jira. Assumes that your JIRA server location is in ~/.jira-server or in the $JIRA_SERVER environment variable.
git-origin-head
Don't recall, maybe twitter
Prints the name of the origin remote's default branch. Not every repository uses main or master.
git-outgoing
Michael Markert's dotfiles
Show commits that are on the local branch that have not been pushed to the tracking branch.
git-overwritten
Mislav Marohnić's dotfiles
Aggregates git blame information about original owners of lines changed or removed in the '...' diff.
git-pie-ify
JeeBak Kim's gist
git pie-ify pattern replacement
git-plotrepo
Matthew McCullogh's scripts collection
Uses dot to draw a graph of the repository.
git-pr-fetch
Joe Block jpb@unixorn.net
Fetch PR branches by refspec from one of a repository's remotes.
git-pr-list
Joe Block jpb@unixorn.net
Lists pull requests. Requires gh.
git-review-commits
Julia Evans'blog
Use fzf topreview commits
git-promote
Trevor's Improving My git Workflow blog post (404 now)
Promotes a local topic branch to a remote tracking branch of the same name.
git-prune-branches
Michael Demmer in jut-io/git-scripts
Deletes each fully merged branch after prompting for confirmation, than asks if you want the deleted branches deleted from your upstream remotes.
git-pruneall
Ryan Tomayko's dotfiles
Prune branches from specified remotes, or all remotes when no remote is specified.
git-publish
Michael Markert's dotfiles
git publish remote [remote-branch].
git-purge-from-history
David Underhill’s blog
Permanently delete files or folders from your git repository.
git-pylint
Joe Block jpb@unixorn.net
Runs pylint on any .py files modified or added in the git status output.
git-rank-contributors
William Morgan wmorgan-git-wt-add@masanjin.net
Rummages through the changelog and orders contributors by the size of the diffs they're responsible for.
git-rebase-authors
Mislav Marohnić's dotfiles
Adds authorship info to interactive git rebase output.
git-rebase-theirs
Rodrigo Silva (MestreLion) linux@rodrigosilva.com
Resolve rebase conflicts by favoring 'theirs' version.
git-recent
Mine
Shows information about most recent commit on all local branches.
git-recently-checkedout-branches
Mislav Marohnić's dotfiles
Shows timestamp and name of recently checked-out branches in reverse chronological order.
git-ref-recent
Y combinator article
Shows the date, branch name, commit hash, and commit subject of branches, from most recently modified to oldest branches.
git-rel
Ryan Tomayko's dotfiles
Shows the relationship between the current branch and ref. With no ref, the current branch's remote tracking branch is used.
git-related
Mislav Marohnić's dotfiles
Show other files that often get changed in commits that touch <file>.
git-release-tag
Mislav Marohnić's dotfiles
Create a GitHub release for a specified tag. The release notes are automatically populated with the contents of git log since the last tagged version.
git-remote-default-branch
Mine
Shows the default branch for a specified remote, defaults to origin when no remote is specified.
git-remove-conflicts ours or theirs FILES...
John Wiegley's git scripts
Automatically resolves conflicts by applying the changes from current branch (ours) or remote branch (theirs).
git-rename-branches
Rodrigo Silva (MestreLion) linux@rodrigosilva.com
Rename multiple branches that start with a given name.
git-replace-author
Stack Overflow
Uses git-filter-branch to rewrite all commits with one name to use another name and email.
git-reset-with-fire
Joe Block jpb@unixorn.net
Hard reset the working directory, then zap any files not known to git.
git-restore-mtime
Rodrigo Silva (MestreLion) linux@rodrigosilva.com
Change mtime of files based on commit date of last change.
git-reup
Zach Holman's dotfiles
Like git pull but show a short and sexy log of changes after merging or rebasing.
git-rm-deleted-from-repo
Joe Block jpb@unixorn.net
Removes files you deleted with rm from the repository for you.
git-root-directory
Joe Block jpb@unixorn.net
Prints the path to the root of the git repository you're in.
git-run-command-on-revisions
Gary Bernhardt's dotfiles
Runs a given command over a range of git revisions.
git-semvers
Daniel Hoherd
List all the tags in a repo that are semver compliant
git-shamend
Danielle Sucher's git-shamend blog post
Amends your staged changes as a fixup (keeping the pre-existing commit message) to the specified commit, or HEAD if no revision is specified.
git-show-overwritten
Mislav Marohnić's dotfiles
Aggregates git blame information about the original owners of lines changed or removed in the '...' diff.
git-shrink-repo
Based on gimbo/gimbo-git.zsh
Shrinks your clone of a git repository.
git-side-by-side
Greg V's vmware-archive/git_scripts
@hefeweizen on the coffeeops slack
git-sp
A. Schwarz's git-sp
"Simple push", single short command to commit, and push. Use -a flag to add all files to commit.
git-sr
Noel Cower's git-sr
Use fzf to switch to a different git ref.
git-stats
Jake Zimmerman's blog
Displays stats for the files different between the current branch and $REVIEW_BRANCH, which if unset defaults to the repository's default branch.
git-submodule-ls
List all submodules in your project
git-submodule-paths
git-submodule --help
Show path to all submodules in your checkout, with their current commit SHA
git-submodule-rm
Greg V's dotfiles & Pascal Sommer
Allows you to remove a submodule easily with git submodule-rm path/to/submodule.
git-superpull
Greg V's vmware-archive/git_scripts
Pulls, then does a git submodule init and git submodule update.
git-switch-branch
Andrew Steele's dotfiles
Make it easier to switch to a branch by a substring of its name. More useful if you are good about deleting branches which have been merged upstream and if your branch names include unique identifiers like ticket/issue numbers or feature names.
git-tag-and-sign
?
Create and sign a new tag.
git-tag-diff
John Wiegley's git-scripts
Show the differences between local tags and ones on the remote, if any.
git-thanks
Mislav Marohnić's dotfiles
List the contributors to a repository in descending commit order, even if their contribution has been completely replaced.
git-track
Zach Holman's dotfiles
Sets up your branch to track a remote branch. Assumes you mean origin/localbranchname.
git-trail
Leah Neukirchen's blog
Show all branching points in the repository's git history so you can see how to reach commits in the current branch from other branches.
git-undelete
?
Undeletes a file.
git-undo-push
?
Undoes your last push to branch $1 of origin.
git-undo
Stack Overflow
Undoes your last commit but keeps the changes in place.
git-unpushed
Zach Holman's dotfiles
Show the diff of everything you haven't pushed to the origin remote yet.
git-unreleased
Mislav Marohnić's dotfiles
Shows git commits since the last tagged version.
git-up
Zach Holman's dotfiles
Like git pull but show a short and sexy log of changes after merging or rebasing.
git-upstream-name
Joe Block jpb@unixorn.net
Print the name of the current branch's upstream.
git-upstream-sync
Joe Block jpb@unixorn.net
Fetches upstream/yourforkname and rebases it into your local fork, then pushes to your origin remote.
git-what-the-hell-just-happened
Gary Bernhardt's dotfiles
Show what just happened.
git-when-merged
Michael Haggerty git-when-merged
Find when a commit was merged into one or more branches.
git-where-pr
Mislav Marohnić's dotfiles
Opens the Pull Request on GitHub where a specified commit originated.
git-where
Mislav Marohnić's dotfiles
Shows where a particular commit falls between releases.
git-whoami
Peter Eisentraut
Shows what username & email you have configured for the repository you're in.
git-winner
Garry Dolley https://github.com/up_the_irons/git-winner
Shows what authors have made the most commits, both by number of commits and by number of lines changed.
git-wordiness
Noel Cower
Shows how wordy people's commit messages are. Useful for shaming the folks who commit atrocities like git commit -m fixup.
git-wtf
William Morgan wmorgan-git-wt-add@masanjin.net
git-wtf displays the state of your repository in a readable, easy-to-scan format. It's useful for getting a summary of how a branch relates to a remote server, and for wrangling many topic branches.