Compute the dirstat numbers by doing the regular line-based diffanalysis, and summing the removed/added line counts. (For binaryfiles, count 64-byte chunks instead, since binary files have nonatural concept of lines). This is a more expensive --dirstatbehavior than the changes behavior, but it does count rearrangedlines within a file as much as other changes. The resulting outputis consistent with what you get from the other --*stat options.
Specify how differences in submodules are shown. When specifying--submodule=short the short format is used. This format justshows the names of the commits at the beginning and end of the range.When --submodule or --submodule=log is specified, the logformat is used. This format lists the commits in the range likegit-submodule[1] summary does. When --submodule=diffis specified, the diff format is used. This format shows aninline diff of the changes in the submodule contents between thecommit range. Defaults to diff.submodule or the short formatif the config option is unset.
[Short Tip] Exclude files in Git diff
Highlight whitespace errors in the context, old or newlines of the diff. Multiple values are separated by comma,none resets previous values, default reset the list tonew and all is a shorthand for old,new,context. Whenthis option is not given, and the configuration variablediff.wsErrorHighlight is not set, only whitespace errors innew lines are highlighted. The whitespace errors are coloredwith color.diff.whitespace.
Instead of showing the full 40-byte hexadecimal objectname in diff-raw format output and diff-tree headerlines, show the shortest prefix that is at least hexdigits long that uniquely refers the object.In diff-patch output format, --full-index takes higherprecedence, i.e. if --full-index is specified, full blobnames will be shown regardless of --abbrev.Non default number of digits can be specified with --abbrev=.
The -M and -C options involve some preliminary steps thatcan detect subsets of renames/copies cheaply, followed by anexhaustive fallback portion that compares all remainingunpaired destinations to all relevant sources. (For renames,only remaining unpaired sources are relevant; for copies, alloriginal sources are relevant.) For N sources anddestinations, this exhaustive check is O(N^2). This optionprevents the exhaustive portion of rename/copy detection fromrunning if the number of source/destination files involvedexceeds the specified number. Defaults to diff.renameLimit.Note that a value of 0 is treated as unlimited.
Discard the files before the named from the output(i.e. skip to), or move them to the end of the output(i.e. rotate to). These were invented primarily for useof the git difftool command, and may not be very usefulotherwise.
When run from a subdirectory of the project, it can betold to exclude changes outside the directory and showpathnames relative to it with this option. When you arenot in a subdirectory (e.g. in a bare repository), youcan name which subdirectory to make the output relativeto by giving a as an argument.--no-relative can be used to countermand both diff.relative configoption and previous --relative.
Allow (or disallow) external text conversion filters to be runwhen comparing binary files. See gitattributes[5] fordetails. Because textconv filters are typically a one-wayconversion, the resulting diff is suitable for humanconsumption, but cannot be applied. For this reason, textconvfilters are enabled by default only for git-diff[1] andgit-log[1], but not for git-format-patch[1] ordiff plumbing commands.
Ignore changes to submodules in the diff generation. can beeither "none", "untracked", "dirty" or "all", which is the default.Using "none" will consider the submodule modified when it either containsuntracked or modified files or its HEAD differs from the commit recordedin the superproject and can be used to override any settings of theignore option in git-config[1] or gitmodules[5]. When"untracked" is used submodules are not considered dirty when they onlycontain untracked content (but they are still scanned for modifiedcontent). Using "dirty" ignores all changes to the work tree of submodules,only changes to the commits stored in the superproject are shown (this wasthe behavior until 1.7.0). Using "all" hides all changes to submodules.
Runninggit-diff[1],git-log[1],git-show[1],git-diff-index[1],git-diff-tree[1], orgit-diff-files[1]with the -p option produces patch text.You can customize the creation of patch text via theGIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS environment variables(see git[1]), and the diff attribute (see gitattributes[5]).
When shown by git diff-tree -c, it compares the parents of amerge commit with the merge result (i.e. file1..fileN are theparents). When shown by git diff-files -c, it compares thetwo unresolved merge parents with the working tree file(i.e. file1 is stage 2 aka "our version", file2 is stage 3 aka"their version").
The --summary option describes newly added, deleted, renamed andcopied files. The --stat option adds diffstat(1) graph to theoutput. These options can be combined with other options, such as-p, and are meant for human consumption.
When using git diff to compare with work treefiles, do not consider stat-only change as changed.Instead, silently run git update-index --refresh toupdate the cached stat information for paths whosecontents in the work tree match the contents in theindex. This option defaults to true. Note that thisaffects only git diff Porcelain, and not lower leveldiff commands such as git diff-files.
Sets the default value of --ignore-submodules. Note that thisaffects only git diff Porcelain, and not lower level diffcommands such as git diff-files. git checkoutand git switch also honorthis setting when reporting uncommitted changes. Setting it toall disables the submodule summary normally shown by git commitand git status when status.submoduleSummary is set unless it isoverridden by using the --ignore-submodules command-line option.The git submodule commands are not affected by this setting.By default this is set to untracked so that any untrackedsubmodules are ignored.
The number of files to consider in the exhaustive portion ofcopy/rename detection; equivalent to the git diff option-l. If not set, the default value is currently 1000. Thissetting has no effect if rename detection is turned off.
Whether and how Git detects renames. If set to "false",rename detection is disabled. If set to "true", basic renamedetection is enabled. If set to "copies" or "copy", Git willdetect copies, as well. Defaults to true. Note that thisaffects only git diff Porcelain like git-diff[1] andgit-log[1], and not lower level commands such asgit-diff-files[1].
Specify the format in which differences in submodules areshown. The "short" format just shows the names of the commitsat the beginning and end of the range. The "log" format liststhe commits in the range like git-submodule[1] summarydoes. The "diff" format shows an inline diff of the changedcontents of the submodule. Defaults to "short".
Highlight whitespace errors in the context, old or newlines of the diff. Multiple values are separated by comma,none resets previous values, default reset the list tonew and all is a shorthand for old,new,context. Thewhitespace errors are colored with color.diff.whitespace.The command line option --ws-error-highlight=overrides this setting.
Trace the evolution of the line range given by ,,or by the function name regex , within the . You maynot give any pathspec limiters. This is currently limited toa walk starting from a single revision, i.e., you may onlygive zero or one positive revision arguments, and and (or ) must exist in the starting revision.You can specify this option more than once. Implies --patch.Patch output can be suppressed using --no-patch, but other diff formats(namely --raw, --numstat, --shortstat, --dirstat, --summary,--name-only, --name-status, --check) are not currently implemented.
Note that unless one of --diff-merges variants (including short-m, -c, and --cc options) is explicitly given, merge commitswill not show a diff, even if a diff format like --patch isselected, nor will they match search options like -S. The exceptionis when --first-parent is in use, in which case first-parent isthe default format.
With this option, diff output for a merge commit shows thedifferences from each of the parents to the merge resultsimultaneously instead of showing pairwise diff between aparent and the result one at a time. Furthermore, it listsonly files which were modified from all parents. -c implies-p. 2ff7e9595c
Comments