/git-follow

Follow lifetime changes of a pathspec in Git.

Primary LanguagePerlMIT LicenseMIT

git-follow(1)

git-follow follows lifetime changes of a pathspec in Git, providing a simplified log and diff.

You can install git-follow via Homebrew or manually.

brew tap nickolasburr/pfa
brew install git-follow
git clone https://github.com/nickolasburr/git-follow.git
cd git-follow
make
make install

By default, files are installed to /usr/local. You can install elsewhere by passing PREFIX to make install.

make install PREFIX="$HOME/.usr/local"

git-config(1) settings can be used to customize the behavior of git-follow.

Configuration Description Settings Default
follow.diff.mode
Diff mode to use with git-diff(1), git-log(1), git-show(1), etc.
See --word-diff of git-log(1).
inline
sxs
colorsxs
inline
follow.log.format
Log format to use with git-log(1).
See --format of git-log(1) for syntax.
-
-
follow.pager.disable
Disable pager used with git-diff(1), git-log(1), git-show(1), etc.
See --no-pager of git(1).
true
false
false

Options can be specified to provide more refined information. If no options are given, all applicable commits will be shown.

-b, --branch BRANCH
Show commits for BRANCH
-f, --first
Show first commit where Git initiated tracking of pathspec.
-F, --func FUNCNAME
Show commits for function FUNCNAME.
See -L of git-log(1).
-l, --last COUNT
Show last COUNT commits for pathspec.
Omit COUNT defaults to last commit.
-L, --lines X[,Y]
Show commits for lines X through Y.
Omit Y defaults to EOF.
-M, --no-merges
Show commits which have a maximum of one parent.
See --no-merges of git-log(1).
-N, --no-patch
Suppress diff output.
See --no-patch of git-log(1).
-O, --no-renames
Disable rename detection.
See --no-renames of git-log(1).
-p, --pager
Force pager when invoking git-log(1).
Overrides follow.pager.disable config value.
-P, --pickaxe STRING
Show commits which change the frequency of STRING in revision history.
See -S of git-log(1).
-r, --range X[,Y]
Show commits in range X through Y.
Omit Y defaults to HEAD.
-R, --reverse
Show commits in reverse chronological order.
See --walk-reflogs of git-log(1).
-t, --tag TAG
Show commits specific to tag TAG.
-T, --total
Show total number of commits for pathspec.
-h, --help, --usage
Show usage information.
-V, --version
Show current version number.

Like standard Git builtins, git-follow supports an optional pathspec delimiter -- to help disambiguate options, option arguments, and refs from pathspecs.

Display commits on branch topic which affected blame.c

git follow --branch topic -- blame.c

Display first commit where Git initiated tracking of branch.c

git follow --first -- branch.c

Display last 5 commits which affected column.c

git follow --last 5 -- column.c

Display last commit where lines 5-<EOF> were affected in diff.c

git follow --last --lines 5 -- diff.c

Display last 3 commits where lines 10-15 were affected in bisect.c

git follow --last 3 --lines 10,15 -- bisect.c

Display commits where function funcname was affected in archive.c

git follow --func funcname -- archive.c

Display commits in range from aa03428 to b354ef9 which affected worktree.c

git follow --range aa03428,b354ef9 -- worktree.c

Display commits in range from tag v1.5.3 to tag v1.5.4 which affected apply.c

git follow --range v1.5.3,v1.5.4 -- apply.c

Display commits up to tag v1.5.3 which affected graph.c

git follow --tag v1.5.3 -- graph.c

Display total number of commits which affected rebase.c

git follow --total -- rebase.c