Script to perform directory diffs using an external diff tool in Git
thenigan/git-diffall
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
master
Could not load branches
Nothing to show
Could not load tags
Nothing to show
{{ refName }}
default
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
-
Clone
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
- Open with GitHub Desktop
- Download ZIP
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
NOTE: The functionality provided by git-diffall has been contributed to Git itself and can be accessed through the "git difftool --dir-diff" command in Git versions v1.7.11 and newer. ## Overview The git-diffall script provides a directory based diff mechanism for git. To determine what diff viewer is used, the script requires either the 'diff.tool' or 'merge.tool' configuration option to be set. This script is compatible with most common forms used to specify a range of revisions to diff: 1. git diffall: shows diff between working tree and staged changes 2. git diffall --cached [<commit>]: shows diff between staged changes and HEAD (or other named commit) 3. git diffall <commit>: shows diff between working tree and named commit 4. git diffall <commit> <commit>: show diff between two named commits 5. git diffall <commit>..<commit>: same as above 6. git diffall <commit>...<commit>: show the changes on the branch containing and up to the second, starting at a common ancestor of both <commit> Note: all forms take an optional path limiter [-- <path>*] The '--extcmd=<command>' option allows the user to specify a custom command for viewing diffs. When given, configured defaults are ignored and the script runs $command $LOCAL $REMOTE. Additionally, $BASE is set in the environment. ## Installation Copy the `git-diffall` script to the directory where your `git` is installed. `$ cd <directory with git-diffall>` `$ cp git-diffall $(git --exec-path)` ## Setup The difftool and mergetool selected for use with `git-diffall` must be one that has a mergetool plugin in your `git` installation. The plugin is a simple script that populates the command-line arguments of the difftool/mergetool using the correct values from `git`. Plugins exist for a variety of tools already and can be found in `$(git --exec-path)/mergetools`. If your favorite tool is missing, you can add it by copying an existing plugin and modifying for your tool. The config commands follow this pattern: `$ git config --global diff.tool <one of the tools listed in $(git --exec-path)/mergetools>` `$ git config --global merge.tool <one of the tools listed in $(git --exec-path)/mergetools>` For example: `$ git config --global diff.tool kdiff3` `$ git config --global merge.tool kdiff3` ## Other Notes This script is based on an example provided by Thomas Rast on the Git list [1]: [1] http://thread.gmane.org/gmane.comp.version-control.git/124807 "git cola diff" [2] provides a graphical frontend for full-tree diffs similar in spirit to git-diffall. [2] https://github.com/git-cola/git-cola
About
Script to perform directory diffs using an external diff tool in Git
Resources
Stars
Watchers
Forks
Packages 0
No packages published