Skip to content

Repository files navigation

ToolGit
PlatformsLicenseSponsor

Git Productivity Toolkit

ToolGit is a collection of scripts that extend Git with various sub-commands to make life easier.

Commands

CommandDescription
git amend(Alias) Amend currently staged changes.
git-goneDelete local branches that no longer exist on remote.
git dir(Alias) Output .git directory path of this Git repository.
git-force-pullFetch and force pull remote tracking branch(es) by doing a hard reset.
git-forwardFetch and fast forward all remote tracking branches.
git gc-all(Alias) Expire the reflog and run a full garbage collection on the Git repository.
git graph(Alias) Show a pretty commit graph.
git-in-repoReturns 0 if current working directory is a Git repository, non-zero otherwise.
git-is-branch-remoteReturns 0 if the branch(es) refer to a remote branch.
git-is-head-detachedReturns 0 if HEAD is in detached state, non-zero otherwise.
git-is-worktree-cleanReturns 0 if the working tree has no changes or untracked files, non-zero otherwise.
git-legacyRebase the whole history of current HEAD on top of revision.
git-main-branchGet the name of the main (default) branch.
git-mode-restoreRestore file modes in index and/or worktree.
git root(Alias) Output root path of this Git repository.
git-xlogSearch history for string only in added or removed lines.

Downloads

Installing

Extract ToolGit to an appropriate folder of your choice and add the folder path to your PATH environment variable. Git will recognize executable git-* files in PATH and allow using them as sub-commands.

Execute the line below to install aliases as well:

git config set --append --global include.path path/to/toolgit/aliases.ini

Getting Started

Use -? switch to learn about commands and their options. Example:

$ git mode-restore -?
usage: git-mode-restore [-s <tree-ish>] [-W] [-S] [-8] [-n] [-q] [-?] path [path ...]
Restore file modes in index and/or worktree.
positional arguments:
path
options:
-s <tree-ish>, --source <tree-ish>
Restore file modes from the given tree. If not specified, the modes are restored from HEAD if --staged is given, otherwise from the index.
-W, --worktree The working tree modes are restored. This is the default.
-S, --staged File modes in the index are restored. Specifying both --worktree and --staged restores both index and worktree.
-8, --octal Print permissions in octal based numeric format instead of using 'rwx' letters.
-n, --dry-run Don’t actually restore file modes, just show what would happen.
-q, --quiet Suppress printing file permission changes to standard output.
-?, --help Show this help text and exit.

Example mode-restore usage:

$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .editorconfig
modified: .gitattributes
modified: .vscode/launch.json
modified: .vscode/tasks.json
modified: README.md
modified: UNLICENSE.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git diff
diff --git a/.editorconfig b/.editorconfig
old mode 100644
new mode 100755
diff --git a/.gitattributes b/.gitattributes
old mode 100644
new mode 100755
diff --git a/.vscode/launch.json b/.vscode/launch.json
old mode 100644
new mode 100755
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
old mode 100644
new mode 100755
diff --git a/README.md b/README.md
old mode 100644
new mode 100755
diff --git a/UNLICENSE.txt b/UNLICENSE.txt
old mode 100644
new mode 100755
$ git mode-restore .
rwxrwxr-x -> rw-rw-r--: .editorconfig
rwxrwxr-x -> rw-rw-r--: .gitattributes
rwxrwxr-x -> rw-rw-r--: .vscode/launch.json
rwxrwxr-x -> rw-rw-r--: .vscode/tasks.json
rwxrwxr-x -> rw-rw-r--: README.md
rwxrwxr-x -> rw-rw-r--: UNLICENSE.txt
$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean

About

Git Productivity Toolkit

Resources

Stars

563 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages