GitHub - unixorn/git-extra-commands: A collection of git utilities, useful extra git scripts, tutorials and other useful articles. (original) (raw)

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-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.