blob: 1e1bd6fb49b65b15c9603478ab859fb619a5cbb6 [file] [log] [blame]
Junio C Hamanob96f40a2024-08-01 00:57:251<!DOCTYPE html>
2<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3<head>
4<meta charset="UTF-8"/>
5<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
6<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
Junio C Hamanod6a33e42025-02-18 23:45:117<meta name="generator" content="Asciidoctor 2.0.23"/>
Junio C Hamanob96f40a2024-08-01 00:57:258<title>git-diff(1)</title>
9<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"/>
10<style>
11/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
12/* Uncomment the following line when using as a custom stylesheet */
13/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
14html{font-family:sans-serif;-webkit-text-size-adjust:100%}
15a{background:none}
16a:focus{outline:thin dotted}
17a:active,a:hover{outline:0}
18h1{font-size:2em;margin:.67em 0}
19b,strong{font-weight:bold}
20abbr{font-size:.9em}
21abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
22dfn{font-style:italic}
23hr{height:0}
24mark{background:#ff0;color:#000}
25code,kbd,pre,samp{font-family:monospace;font-size:1em}
26pre{white-space:pre-wrap}
27q{quotes:"\201C" "\201D" "\2018" "\2019"}
28small{font-size:80%}
29sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
30sup{top:-.5em}
31sub{bottom:-.25em}
32img{border:0}
33svg:not(:root){overflow:hidden}
34figure{margin:0}
35audio,video{display:inline-block}
36audio:not([controls]){display:none;height:0}
37fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
38legend{border:0;padding:0}
39button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
40button,input{line-height:normal}
41button,select{text-transform:none}
42button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
43button[disabled],html input[disabled]{cursor:default}
44input[type=checkbox],input[type=radio]{padding:0}
45button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
46textarea{overflow:auto;vertical-align:top}
47table{border-collapse:collapse;border-spacing:0}
48*,::before,::after{box-sizing:border-box}
49html,body{font-size:100%}
50body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
51a:hover{cursor:pointer}
52img,object,embed{max-width:100%;height:auto}
53object,embed{height:100%}
54img{-ms-interpolation-mode:bicubic}
55.left{float:left!important}
56.right{float:right!important}
57.text-left{text-align:left!important}
58.text-right{text-align:right!important}
59.text-center{text-align:center!important}
60.text-justify{text-align:justify!important}
61.hide{display:none}
62img,object,svg{display:inline-block;vertical-align:middle}
63textarea{height:auto;min-height:50px}
64select{width:100%}
65.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
66div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
67a{color:#2156a5;text-decoration:underline;line-height:inherit}
68a:hover,a:focus{color:#1d4b8f}
69a img{border:0}
70p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
71p aside{font-size:.875em;line-height:1.35;font-style:italic}
72h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
73h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
74h1{font-size:2.125em}
75h2{font-size:1.6875em}
76h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
77h4,h5{font-size:1.125em}
78h6{font-size:1em}
79hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
80em,i{font-style:italic;line-height:inherit}
81strong,b{font-weight:bold;line-height:inherit}
82small{font-size:60%;line-height:inherit}
83code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
84ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
85ul,ol{margin-left:1.5em}
86ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
87ul.circle{list-style-type:circle}
88ul.disc{list-style-type:disc}
89ul.square{list-style-type:square}
90ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
91ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
92dl dt{margin-bottom:.3125em;font-weight:bold}
93dl dd{margin-bottom:1.25em}
94blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
95blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
96@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
97h1{font-size:2.75em}
98h2{font-size:2.3125em}
99h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
100h4{font-size:1.4375em}}
101table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
102table thead,table tfoot{background:#f7f8f7}
103table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
104table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
105table tr.even,table tr.alt{background:#f8f8f7}
106table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
107h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
108h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
109.center{margin-left:auto;margin-right:auto}
110.stretch{width:100%}
111.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
112.clearfix::after,.float-group::after{clear:both}
113:not(pre).nobreak{word-wrap:normal}
114:not(pre).nowrap{white-space:nowrap}
115:not(pre).pre-wrap{white-space:pre-wrap}
116:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
117pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
118pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
119pre>code{display:block}
120pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
121em em{font-style:normal}
122strong strong{font-weight:400}
123.keyseq{color:rgba(51,51,51,.8)}
124kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
125.keyseq kbd:first-child{margin-left:0}
126.keyseq kbd:last-child{margin-right:0}
127.menuseq,.menuref{color:#000}
128.menuseq b:not(.caret),.menuref{font-weight:inherit}
129.menuseq{word-spacing:-.02em}
130.menuseq b.caret{font-size:1.25em;line-height:.8}
131.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
132b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
133b.button::before{content:"[";padding:0 3px 0 2px}
134b.button::after{content:"]";padding:0 2px 0 3px}
135p a>code:hover{color:rgba(0,0,0,.9)}
136#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
137#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
138#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
139#content{margin-top:1.25em}
140#content::before{content:none}
141#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
142#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
Junio C Hamanod6a33e42025-02-18 23:45:11143#header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px}
Junio C Hamanob96f40a2024-08-01 00:57:25144#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
145#header .details span:first-child{margin-left:-.125em}
146#header .details span.email a{color:rgba(0,0,0,.85)}
147#header .details br{display:none}
148#header .details br+span::before{content:"\00a0\2013\00a0"}
149#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
150#header .details br+span#revremark::before{content:"\00a0|\00a0"}
151#header #revnumber{text-transform:capitalize}
152#header #revnumber::after{content:"\00a0"}
153#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
154#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
155#toc>ul{margin-left:.125em}
156#toc ul.sectlevel0>li>a{font-style:italic}
157#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
158#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
159#toc li{line-height:1.3334;margin-top:.3334em}
160#toc a{text-decoration:none}
161#toc a:active{text-decoration:underline}
162#toctitle{color:#7a2518;font-size:1.2em}
163@media screen and (min-width:768px){#toctitle{font-size:1.375em}
164body.toc2{padding-left:15em;padding-right:0}
Junio C Hamanod6a33e42025-02-18 23:45:11165body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
Junio C Hamanob96f40a2024-08-01 00:57:25166#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
167#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
168#toc.toc2>ul{font-size:.9em;margin-bottom:0}
169#toc.toc2 ul ul{margin-left:0;padding-left:1em}
170#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
171body.toc2.toc-right{padding-left:0;padding-right:15em}
172body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
173@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
174#toc.toc2{width:20em}
175#toc.toc2 #toctitle{font-size:1.375em}
176#toc.toc2>ul{font-size:.95em}
177#toc.toc2 ul ul{padding-left:1.25em}
178body.toc2.toc-right{padding-left:0;padding-right:20em}}
179#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
180#content #toc>:first-child{margin-top:0}
181#content #toc>:last-child{margin-bottom:0}
182#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
183#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
184#content{margin-bottom:.625em}
185.sect1{padding-bottom:.625em}
186@media screen and (min-width:768px){#content{margin-bottom:1.25em}
187.sect1{padding-bottom:1.25em}}
188.sect1:last-child{padding-bottom:0}
189.sect1+.sect1{border-top:1px solid #e7e7e9}
190#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
191#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
192#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
193#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
194#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
195details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
196details{margin-left:1.25rem}
197details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
198details>summary::-webkit-details-marker{display:none}
199details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
200details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
201details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
202.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
203table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
204.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
205.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
206.admonitionblock>table td.icon{text-align:center;width:80px}
207.admonitionblock>table td.icon img{max-width:none}
208.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
209.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
210.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
211.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
212.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
213.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
214.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
215.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
216.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
217@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
218@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
219.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
220.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
221.listingblock>.content{position:relative}
222.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
223.listingblock:hover code[data-lang]::before{display:block}
224.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
225.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
226.listingblock pre.highlightjs{padding:0}
227.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
228.listingblock pre.prettyprint{border-width:0}
229.prettyprint{background:#f7f7f8}
230pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
231pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
232pre.prettyprint li code[data-lang]::before{opacity:1}
233pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
234table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
235table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
236table.linenotable td.code{padding-left:.75em}
237table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
238pre.pygments span.linenos{display:inline-block;margin-right:.75em}
239.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
240.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
241.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
242.quoteblock blockquote{margin:0;padding:0;border:0}
243.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
244.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
245.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
246.verseblock{margin:0 1em 1.25em}
247.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
248.verseblock pre strong{font-weight:400}
249.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
250.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
251.quoteblock .attribution br,.verseblock .attribution br{display:none}
252.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
253.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
254.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
255.quoteblock.abstract{margin:0 1em 1.25em;display:block}
256.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
257.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
258.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
259.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
260.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
261p.tableblock:last-child{margin-bottom:0}
262td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
263td.tableblock>.content>:last-child{margin-bottom:-1.25em}
264table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
265table.grid-all>*>tr>*{border-width:1px}
266table.grid-cols>*>tr>*{border-width:0 1px}
267table.grid-rows>*>tr>*{border-width:1px 0}
268table.frame-all{border-width:1px}
269table.frame-ends{border-width:1px 0}
270table.frame-sides{border-width:0 1px}
271table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
272table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
273table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
274table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
275table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
276th.halign-left,td.halign-left{text-align:left}
277th.halign-right,td.halign-right{text-align:right}
278th.halign-center,td.halign-center{text-align:center}
279th.valign-top,td.valign-top{vertical-align:top}
280th.valign-bottom,td.valign-bottom{vertical-align:bottom}
281th.valign-middle,td.valign-middle{vertical-align:middle}
282table thead th,table tfoot th{font-weight:bold}
283tbody tr th{background:#f7f8f7}
284tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
285p.tableblock>code:only-child{background:none;padding:0}
286p.tableblock{font-size:1em}
287ol{margin-left:1.75em}
288ul li ol{margin-left:1.5em}
289dl dd{margin-left:1.125em}
290dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
291li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
292ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
293ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
294ul.unstyled,ol.unstyled{margin-left:0}
295li>p:empty:only-child::before{content:"";display:inline-block}
296ul.checklist>li>p:first-child{margin-left:-1em}
297ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
298ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
299ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
300ul.inline>li{margin-left:1.25em}
301.unstyled dl dt{font-weight:400;font-style:normal}
302ol.arabic{list-style-type:decimal}
303ol.decimal{list-style-type:decimal-leading-zero}
304ol.loweralpha{list-style-type:lower-alpha}
305ol.upperalpha{list-style-type:upper-alpha}
306ol.lowerroman{list-style-type:lower-roman}
307ol.upperroman{list-style-type:upper-roman}
308ol.lowergreek{list-style-type:lower-greek}
309.hdlist>table,.colist>table{border:0;background:none}
310.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
311td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
312td.hdlist1{font-weight:bold;padding-bottom:1.25em}
313td.hdlist2{word-wrap:anywhere}
314.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
315.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
316.colist td:not([class]):first-child img{max-width:none}
317.colist td:not([class]):last-child{padding:.25em 0}
318.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
319.imageblock.left{margin:.25em .625em 1.25em 0}
320.imageblock.right{margin:.25em 0 1.25em .625em}
321.imageblock>.title{margin-bottom:0}
322.imageblock.thumb,.imageblock.th{border-width:6px}
323.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
324.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
325.image.left{margin-right:.625em}
326.image.right{margin-left:.625em}
327a.image{text-decoration:none;display:inline-block}
328a.image object{pointer-events:none}
329sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
330sup.footnote a,sup.footnoteref a{text-decoration:none}
Junio C Hamanod6a33e42025-02-18 23:45:11331sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline}
Junio C Hamanob96f40a2024-08-01 00:57:25332#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
333#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
334#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
335#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
336#footnotes .footnote:last-of-type{margin-bottom:0}
337#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
338div.unbreakable{page-break-inside:avoid}
339.big{font-size:larger}
340.small{font-size:smaller}
341.underline{text-decoration:underline}
342.overline{text-decoration:overline}
343.line-through{text-decoration:line-through}
344.aqua{color:#00bfbf}
345.aqua-background{background:#00fafa}
346.black{color:#000}
347.black-background{background:#000}
348.blue{color:#0000bf}
349.blue-background{background:#0000fa}
350.fuchsia{color:#bf00bf}
351.fuchsia-background{background:#fa00fa}
352.gray{color:#606060}
353.gray-background{background:#7d7d7d}
354.green{color:#006000}
355.green-background{background:#007d00}
356.lime{color:#00bf00}
357.lime-background{background:#00fa00}
358.maroon{color:#600000}
359.maroon-background{background:#7d0000}
360.navy{color:#000060}
361.navy-background{background:#00007d}
362.olive{color:#606000}
363.olive-background{background:#7d7d00}
364.purple{color:#600060}
365.purple-background{background:#7d007d}
366.red{color:#bf0000}
367.red-background{background:#fa0000}
368.silver{color:#909090}
369.silver-background{background:#bcbcbc}
370.teal{color:#006060}
371.teal-background{background:#007d7d}
372.white{color:#bfbfbf}
373.white-background{background:#fafafa}
374.yellow{color:#bfbf00}
375.yellow-background{background:#fafa00}
376span.icon>.fa{cursor:default}
377a span.icon>.fa{cursor:inherit}
378.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
379.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
380.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
381.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
382.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
383.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
384.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
385.conum[data-value] *{color:#fff!important}
386.conum[data-value]+b{display:none}
387.conum[data-value]::after{content:attr(data-value)}
388pre .conum[data-value]{position:relative;top:-.125em}
389b.conum *{color:inherit!important}
390.conum:not([data-value]):empty{display:none}
391dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
392h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
393p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
394p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
395p{margin-bottom:1.25rem}
396.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
397.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
398.print-only{display:none!important}
399@page{margin:1.25cm .75cm}
400@media print{*{box-shadow:none!important;text-shadow:none!important}
401html{font-size:80%}
402a{color:inherit!important;text-decoration:underline!important}
403a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
404a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
405abbr[title]{border-bottom:1px dotted}
406abbr[title]::after{content:" (" attr(title) ")"}
407pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
408thead{display:table-header-group}
409svg{max-width:100%}
410p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
411h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
412#header,#content,#footnotes,#footer{max-width:none}
413#toc,.sidebarblock,.exampleblock>.content{background:none!important}
414#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
415body.book #header{text-align:center}
416body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
417body.book #header .details{border:0!important;display:block;padding:0!important}
418body.book #header .details span:first-child{margin-left:0!important}
419body.book #header .details br{display:block}
420body.book #header .details br+span::before{content:none!important}
421body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
422body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
423.listingblock code[data-lang]::before{display:block}
424#footer{padding:0 .9375em}
425.hide-on-print{display:none!important}
426.print-only{display:block!important}
427.hide-for-print{display:none!important}
428.show-for-print{display:inherit!important}}
429@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
430.sect1{padding:0!important}
431.sect1+.sect1{border:0}
432#footer{background:none}
433#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
434@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
435</style>
436<style>
437pre>code {
438 display: inline;
439}
440</style>
441</head>
442<body class="manpage">
443<div id="header">
444<h1>git-diff(1) Manual Page</h1>
445<h2 id="_name">NAME</h2>
446<div class="sectionbody">
447<p>git-diff - Show changes between commits, commit and working tree, etc</p>
448</div>
449</div>
450<div id="content">
451<div class="sect1">
452<h2 id="_synopsis">SYNOPSIS</h2>
453<div class="sectionbody">
454<div class="verseblock">
Junio C Hamano7f7e6a42024-12-04 04:45:58455<pre class="content"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] [<em>&lt;commit&gt;</em>] [<code>--</code>] [<em>&lt;path&gt;</em>&#8230;&#8203;]
456<code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <code>--cached</code> [<code>--merge-base</code>] [<em>&lt;commit&gt;</em>] [<code>--</code>] [<em>&lt;path&gt;</em>&#8230;&#8203;]
457<code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] [<code>--merge-base</code>] <em>&lt;commit&gt;</em> [<em>&lt;commit&gt;</em>&#8230;&#8203;] <em>&lt;commit&gt;</em> [<code>--</code>] [<em>&lt;path&gt;</em>&#8230;&#8203;]
Junio C Hamanoe03f5992025-04-23 22:24:29458<code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <em>&lt;commit&gt;</em><code>...</code><em>&lt;commit&gt;</em> [<code>--</code>] [<em>&lt;path&gt;</em>&#8230;&#8203;]
459<code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <em>&lt;blob&gt;</em> <em>&lt;blob&gt;</em>
Junio C Hamanoa6442842025-06-18 21:56:06460<code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <code>--no-index</code> [<code>--</code>] <em>&lt;path&gt;</em> <em>&lt;path&gt;</em> [<em>&lt;pathspec&gt;</em>&#8230;&#8203;]</pre>
Junio C Hamanob96f40a2024-08-01 00:57:25461</div>
462</div>
463</div>
464<div class="sect1">
465<h2 id="_description">DESCRIPTION</h2>
466<div class="sectionbody">
467<div class="paragraph">
468<p>Show changes between the working tree and the index or a tree, changes
469between the index and a tree, changes between two trees, changes resulting
470from a merge, changes between two blob objects, or changes between two
471files on disk.</p>
472</div>
473<div class="dlist">
474<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:58475<dt class="hdlist1"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] [<code>--</code>] [<em>&lt;path&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25476<dd>
477<p>This form is to view the changes you made relative to
478the index (staging area for the next commit). In other
479words, the differences are what you <em>could</em> tell Git to
480further add to the index but you still haven&#8217;t. You can
481stage these changes by using <a href="git-add.html">git-add(1)</a>.</p>
482</dd>
Junio C Hamanoa6442842025-06-18 21:56:06483<dt class="hdlist1"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <code>--no-index</code> [<code>--</code>] <em>&lt;path&gt;</em> <em>&lt;path&gt;</em> [<em>&lt;pathspec&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25484<dd>
485<p>This form is to compare the given two paths on the
486filesystem. You can omit the <code>--no-index</code> option when
487running the command in a working tree controlled by Git and
488at least one of the paths points outside the working tree,
489or when running the command outside a working tree
Junio C Hamanoa6442842025-06-18 21:56:06490controlled by Git. This form implies <code>--exit-code</code>. If both
491paths point to directories, additional pathspecs may be
492provided. These will limit the files included in the
493difference. All such pathspecs must be relative as they
494apply to both sides of the diff.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25495</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58496<dt class="hdlist1"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <code>--cached</code> [<code>--merge-base</code>] [<em>&lt;commit&gt;</em>] [<code>--</code>] [<em>&lt;path&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25497<dd>
498<p>This form is to view the changes you staged for the next
Junio C Hamano7f7e6a42024-12-04 04:45:58499commit relative to the named <em>&lt;commit&gt;</em>. Typically you
Junio C Hamanob96f40a2024-08-01 00:57:25500would want comparison with the latest commit, so if you
Junio C Hamano7f7e6a42024-12-04 04:45:58501do not give <em>&lt;commit&gt;</em>, it defaults to <code>HEAD</code>.
502If <code>HEAD</code> does not exist (e.g. unborn branches) and
503<em>&lt;commit&gt;</em> is not given, it shows all staged changes.
504<code>--staged</code> is a synonym of <code>--cached</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25505<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:58506<p>If <code>--merge-base</code> is given, instead of using <em>&lt;commit&gt;</em>, use the merge base
507of <em>&lt;commit&gt;</em> and <code>HEAD</code>. <code>git</code> <code>diff</code> <code>--cached</code> <code>--merge-base</code> <code>A</code> is equivalent to
Junio C Hamanodc392382024-10-11 18:57:29508<code>git</code> <code>diff</code> <code>--cached</code> <code>$</code>(<code>git</code> <code>merge-base</code> <code>A</code> <code>HEAD</code>).</p>
Junio C Hamanob96f40a2024-08-01 00:57:25509</div>
510</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58511<dt class="hdlist1"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] [<code>--merge-base</code>] <em>&lt;commit&gt;</em> [<code>--</code>] [<em>&lt;path&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25512<dd>
513<p>This form is to view the changes you have in your
Junio C Hamano7f7e6a42024-12-04 04:45:58514working tree relative to the named <em>&lt;commit&gt;</em>. You can
515use <code>HEAD</code> to compare it with the latest commit, or a
Junio C Hamanob96f40a2024-08-01 00:57:25516branch name to compare with the tip of a different
517branch.</p>
518<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:58519<p>If <code>--merge-base</code> is given, instead of using <em>&lt;commit&gt;</em>, use the merge base
520of <em>&lt;commit&gt;</em> and <code>HEAD</code>. <code>git</code> <code>diff</code> <code>--merge-base</code> <code>A</code> is equivalent to
Junio C Hamanodc392382024-10-11 18:57:29521<code>git</code> <code>diff</code> <code>$</code>(<code>git</code> <code>merge-base</code> <code>A</code> <code>HEAD</code>).</p>
Junio C Hamanob96f40a2024-08-01 00:57:25522</div>
523</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58524<dt class="hdlist1"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] [<code>--merge-base</code>] <em>&lt;commit&gt;</em> <em>&lt;commit&gt;</em> [<code>--</code>] [<em>&lt;path&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25525<dd>
526<p>This is to view the changes between two arbitrary
Junio C Hamano7f7e6a42024-12-04 04:45:58527<em>&lt;commit&gt;</em>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25528<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:58529<p>If <code>--merge-base</code> is given, use the merge base of the two commits for the
Junio C Hamanodc392382024-10-11 18:57:29530"before" side. <code>git</code> <code>diff</code> <code>--merge-base</code> <code>A</code> <code>B</code> is equivalent to
531<code>git</code> <code>diff</code> <code>$</code>(<code>git</code> <code>merge-base</code> <code>A</code> <code>B</code>) <code>B</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25532</div>
533</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58534<dt class="hdlist1"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <em>&lt;commit&gt;</em> <em>&lt;commit&gt;</em><code>...</code><em>&lt;commit&gt;</em> [<code>--</code>] [<em>&lt;path&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25535<dd>
536<p>This form is to view the results of a merge commit. The first
Junio C Hamano7f7e6a42024-12-04 04:45:58537listed <em>&lt;commit&gt;</em> must be the merge itself; the remaining two or
Junio C Hamanob96f40a2024-08-01 00:57:25538more commits should be its parents. Convenient ways to produce
Junio C Hamano7f7e6a42024-12-04 04:45:58539the desired set of revisions are to use the suffixes <code>@</code> and
540<code>^</code>!. If <code>A</code> is a merge commit, then <code>git</code> <code>diff</code> <code>A</code> <code>A^@</code>,
Junio C Hamanodc392382024-10-11 18:57:29541<code>git</code> <code>diff</code> <code>A^</code>! and <code>git</code> <code>show</code> <code>A</code> all give the same combined diff.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25542</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58543<dt class="hdlist1"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <em>&lt;commit&gt;</em><code>..</code><em>&lt;commit&gt;</em> [<code>--</code>] [<em>&lt;path&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25544<dd>
Junio C Hamanoe03f5992025-04-23 22:24:29545<p>This is synonymous to the earlier form (without the <code>..</code>) for
Junio C Hamano7f7e6a42024-12-04 04:45:58546viewing the changes between two arbitrary <em>&lt;commit&gt;</em>. If <em>&lt;commit&gt;</em> on
Junio C Hamanob96f40a2024-08-01 00:57:25547one side is omitted, it will have the same effect as
Junio C Hamano7f7e6a42024-12-04 04:45:58548using <code>HEAD</code> instead.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25549</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58550<dt class="hdlist1"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <em>&lt;commit&gt;</em><code>...</code><em>&lt;commit&gt;</em> [<code>--</code>] [<em>&lt;path&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25551<dd>
552<p>This form is to view the changes on the branch containing
Junio C Hamano7f7e6a42024-12-04 04:45:58553and up to the second <em>&lt;commit&gt;</em>, starting at a common ancestor
554of both <em>&lt;commit&gt;</em>. <code>git</code> <code>diff</code> <code>A</code><code>...</code><code>B</code> is equivalent to
Junio C Hamanodc392382024-10-11 18:57:29555<code>git</code> <code>diff</code> <code>$</code>(<code>git</code> <code>merge-base</code> <code>A</code> <code>B</code>) <code>B</code>. You can omit any one
Junio C Hamano7f7e6a42024-12-04 04:45:58556of <em>&lt;commit&gt;</em>, which has the same effect as using <code>HEAD</code> instead.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25557</dd>
558</dl>
559</div>
560<div class="paragraph">
561<p>Just in case you are doing something exotic, it should be
Junio C Hamano7f7e6a42024-12-04 04:45:58562noted that all of the <em>&lt;commit&gt;</em> in the above description, except
Junio C Hamanoe03f5992025-04-23 22:24:29563in the <code>--merge-base</code> case and in the last two forms that use <code>..</code>
Junio C Hamano7f7e6a42024-12-04 04:45:58564notations, can be any <em>&lt;tree&gt;</em>. A tree of interest is the one pointed to
565by the ref named <code>AUTO_MERGE</code>, which is written by the <code>ort</code> merge
Junio C Hamanob96f40a2024-08-01 00:57:25566strategy upon hitting merge conflicts (see <a href="git-merge.html">git-merge(1)</a>).
567Comparing the working tree with <code>AUTO_MERGE</code> shows changes you&#8217;ve made
568so far to resolve textual conflicts (see the examples below).</p>
569</div>
570<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:58571<p>For a more complete list of ways to spell <em>&lt;commit&gt;</em>, see
Junio C Hamanob96f40a2024-08-01 00:57:25572"SPECIFYING REVISIONS" section in <a href="gitrevisions.html">gitrevisions(7)</a>.
Junio C Hamano7f7e6a42024-12-04 04:45:58573However, <code>diff</code> is about comparing two <em>endpoints</em>, not ranges,
574and the range notations (<em>&lt;commit&gt;</em><code>..</code><em>&lt;commit&gt;</em> and <em>&lt;commit&gt;</em><code>...</code><em>&lt;commit&gt;</em>)
575do not mean a range as defined in the
Junio C Hamanob96f40a2024-08-01 00:57:25576"SPECIFYING RANGES" section in <a href="gitrevisions.html">gitrevisions(7)</a>.</p>
577</div>
578<div class="dlist">
579<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:58580<dt class="hdlist1"><code>git</code> <code>diff</code> [<em>&lt;options&gt;</em>] <em>&lt;blob&gt;</em> <em>&lt;blob&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25581<dd>
582<p>This form is to view the differences between the raw
583contents of two blob objects.</p>
584</dd>
585</dl>
586</div>
587</div>
588</div>
589<div class="sect1">
590<h2 id="_options">OPTIONS</h2>
591<div class="sectionbody">
592<div class="dlist">
593<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:58594<dt class="hdlist1"><code>-p</code></dt>
595<dt class="hdlist1"><code>-u</code></dt>
596<dt class="hdlist1"><code>--patch</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25597<dd>
598<p>Generate patch (see <a href="#generate_patch_text_with_p">Generating patch text with -p</a>).
599This is the default.</p>
600</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58601<dt class="hdlist1"><code>-s</code></dt>
602<dt class="hdlist1"><code>--no-patch</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25603<dd>
604<p>Suppress all output from the diff machinery. Useful for
Junio C Hamanodc392382024-10-11 18:57:29605commands like <code>git</code> <code>show</code> that show the patch by default to
Junio C Hamanob96f40a2024-08-01 00:57:25606squelch their output, or to cancel the effect of options like
607<code>--patch</code>, <code>--stat</code> earlier on the command line in an alias.</p>
608</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58609<dt class="hdlist1"><code>-U</code><em>&lt;n&gt;</em></dt>
610<dt class="hdlist1"><code>--unified=</code><em>&lt;n&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25611<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58612<p>Generate diffs with <em>&lt;n&gt;</em> lines of context instead of
Junio C Hamanob96f40a2024-08-01 00:57:25613the usual three.
614Implies <code>--patch</code>.</p>
615</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58616<dt class="hdlist1"><code>--output=</code><em>&lt;file&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25617<dd>
618<p>Output to a specific file instead of stdout.</p>
619</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58620<dt class="hdlist1"><code>--output-indicator-new=</code><em>&lt;char&gt;</em></dt>
621<dt class="hdlist1"><code>--output-indicator-old=</code><em>&lt;char&gt;</em></dt>
622<dt class="hdlist1"><code>--output-indicator-context=</code><em>&lt;char&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25623<dd>
624<p>Specify the character used to indicate new, old or context
Junio C Hamano7f7e6a42024-12-04 04:45:58625lines in the generated patch. Normally they are <code>+</code>, <code>-</code> and
Junio C Hamanob96f40a2024-08-01 00:57:25626' ' respectively.</p>
627</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58628<dt class="hdlist1"><code>--raw</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25629<dd>
630<p>Generate the diff in raw format.</p>
631</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58632<dt class="hdlist1"><code>--patch-with-raw</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25633<dd>
Junio C Hamanodc392382024-10-11 18:57:29634<p>Synonym for <code>-p</code> <code>--raw</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25635</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58636<dt class="hdlist1"><code>--indent-heuristic</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25637<dd>
638<p>Enable the heuristic that shifts diff hunk boundaries to make patches
639easier to read. This is the default.</p>
640</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58641<dt class="hdlist1"><code>--no-indent-heuristic</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25642<dd>
643<p>Disable the indent heuristic.</p>
644</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58645<dt class="hdlist1"><code>--minimal</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25646<dd>
647<p>Spend extra time to make sure the smallest possible
648diff is produced.</p>
649</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58650<dt class="hdlist1"><code>--patience</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25651<dd>
652<p>Generate a diff using the "patience diff" algorithm.</p>
653</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58654<dt class="hdlist1"><code>--histogram</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25655<dd>
656<p>Generate a diff using the "histogram diff" algorithm.</p>
657</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58658<dt class="hdlist1"><code>--anchored=</code><em>&lt;text&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25659<dd>
660<p>Generate a diff using the "anchored diff" algorithm.</p>
661<div class="paragraph">
662<p>This option may be specified more than once.</p>
663</div>
664<div class="paragraph">
665<p>If a line exists in both the source and destination, exists only once,
Junio C Hamano7f7e6a42024-12-04 04:45:58666and starts with <em>&lt;text&gt;</em>, this algorithm attempts to prevent it from
Junio C Hamanob96f40a2024-08-01 00:57:25667appearing as a deletion or addition in the output. It uses the "patience
668diff" algorithm internally.</p>
669</div>
670</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58671<dt class="hdlist1"><code>--diff-algorithm=</code>(<code>patience</code>|<code>minimal</code>|<code>histogram</code>|<code>myers</code>)</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25672<dd>
673<p>Choose a diff algorithm. The variants are as follows:</p>
674<div class="openblock">
675<div class="content">
676<div class="dlist">
677<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:58678<dt class="hdlist1"><code>default</code></dt>
679<dt class="hdlist1"><code>myers</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25680<dd>
681<p>The basic greedy diff algorithm. Currently, this is the default.</p>
682</dd>
683<dt class="hdlist1"><code>minimal</code></dt>
684<dd>
685<p>Spend extra time to make sure the smallest possible diff is
686produced.</p>
687</dd>
688<dt class="hdlist1"><code>patience</code></dt>
689<dd>
690<p>Use "patience diff" algorithm when generating patches.</p>
691</dd>
692<dt class="hdlist1"><code>histogram</code></dt>
693<dd>
694<p>This algorithm extends the patience algorithm to "support
695low-occurrence common elements".</p>
696</dd>
697</dl>
698</div>
699</div>
700</div>
701<div class="paragraph">
702<p>For instance, if you configured the <code>diff.algorithm</code> variable to a
703non-default value and want to use the default one, then you
704have to use <code>--diff-algorithm=default</code> option.</p>
705</div>
706</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58707<dt class="hdlist1"><code>--stat</code>[<code>=</code><em>&lt;width&gt;</em>[<code>,</code><em>&lt;name-width&gt;</em>[<code>,</code><em>&lt;count&gt;</em>]]]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25708<dd>
709<p>Generate a diffstat. By default, as much space as necessary
710will be used for the filename part, and the rest for the graph
711part. Maximum width defaults to terminal width, or 80 columns
712if not connected to a terminal, and can be overridden by
Junio C Hamanodc392382024-10-11 18:57:29713<em>&lt;width&gt;</em>. The width of the filename part can be limited by
714giving another width <em>&lt;name-width&gt;</em> after a comma or by setting
Junio C Hamano7f7e6a42024-12-04 04:45:58715<code>diff.statNameWidth=</code><em>&lt;name-width&gt;</em>. The width of the graph part can be
716limited by using <code>--stat-graph-width=</code><em>&lt;graph-width&gt;</em> or by setting
717<code>diff.statGraphWidth=</code><em>&lt;graph-width&gt;</em>. Using <code>--stat</code> or
Junio C Hamanob96f40a2024-08-01 00:57:25718<code>--stat-graph-width</code> affects all commands generating a stat graph,
719while setting <code>diff.statNameWidth</code> or <code>diff.statGraphWidth</code>
Junio C Hamanodc392382024-10-11 18:57:29720does not affect <code>git</code> <code>format-patch</code>.
721By giving a third parameter <em>&lt;count&gt;</em>, you can limit the output to
Junio C Hamanoe03f5992025-04-23 22:24:29722the first <em>&lt;count&gt;</em> lines, followed by <code>...</code> if there are more.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25723<div class="paragraph">
Junio C Hamanodc392382024-10-11 18:57:29724<p>These parameters can also be set individually with <code>--stat-width=</code><em>&lt;width&gt;</em>,
725<code>--stat-name-width=</code><em>&lt;name-width&gt;</em> and <code>--stat-count=</code><em>&lt;count&gt;</em>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25726</div>
727</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58728<dt class="hdlist1"><code>--compact-summary</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25729<dd>
730<p>Output a condensed summary of extended header information such
Junio C Hamano7f7e6a42024-12-04 04:45:58731as file creations or deletions ("new" or "gone", optionally <code>+l</code>
732if it&#8217;s a symlink) and mode changes (<code>+x</code> or <code>-x</code> for adding
Junio C Hamanob96f40a2024-08-01 00:57:25733or removing executable bit respectively) in diffstat. The
734information is put between the filename part and the graph
735part. Implies <code>--stat</code>.</p>
736</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58737<dt class="hdlist1"><code>--numstat</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25738<dd>
739<p>Similar to <code>--stat</code>, but shows number of added and
740deleted lines in decimal notation and pathname without
741abbreviation, to make it more machine friendly. For
742binary files, outputs two <code>-</code> instead of saying
Junio C Hamanodc392382024-10-11 18:57:29743<code>0</code> <code>0</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25744</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58745<dt class="hdlist1"><code>--shortstat</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25746<dd>
747<p>Output only the last line of the <code>--stat</code> format containing total
748number of modified files, as well as number of added and deleted
749lines.</p>
750</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58751<dt class="hdlist1"><code>-X</code> [<em>&lt;param&gt;</em><code>,..</code>.]</dt>
752<dt class="hdlist1"><code>--dirstat</code>[<code>=</code><em>&lt;param&gt;</em><code>,..</code>.]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25753<dd>
754<p>Output the distribution of relative amount of changes for each
755sub-directory. The behavior of <code>--dirstat</code> can be customized by
756passing it a comma separated list of parameters.
757The defaults are controlled by the <code>diff.dirstat</code> configuration
758variable (see <a href="git-config.html">git-config(1)</a>).
759The following parameters are available:</p>
760<div class="openblock">
761<div class="content">
762<div class="dlist">
763<dl>
764<dt class="hdlist1"><code>changes</code></dt>
765<dd>
766<p>Compute the dirstat numbers by counting the lines that have been
767removed from the source, or added to the destination. This ignores
768the amount of pure code movements within a file. In other words,
769rearranging lines in a file is not counted as much as other changes.
770This is the default behavior when no parameter is given.</p>
771</dd>
772<dt class="hdlist1"><code>lines</code></dt>
773<dd>
774<p>Compute the dirstat numbers by doing the regular line-based diff
775analysis, and summing the removed/added line counts. (For binary
776files, count 64-byte chunks instead, since binary files have no
777natural concept of lines). This is a more expensive <code>--dirstat</code>
778behavior than the <code>changes</code> behavior, but it does count rearranged
779lines within a file as much as other changes. The resulting output
Junio C Hamanoe03f5992025-04-23 22:24:29780is consistent with what you get from the other <code>--*stat</code> options.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25781</dd>
782<dt class="hdlist1"><code>files</code></dt>
783<dd>
784<p>Compute the dirstat numbers by counting the number of files changed.
785Each changed file counts equally in the dirstat analysis. This is
786the computationally cheapest <code>--dirstat</code> behavior, since it does
787not have to look at the file contents at all.</p>
788</dd>
789<dt class="hdlist1"><code>cumulative</code></dt>
790<dd>
791<p>Count changes in a child directory for the parent directory as well.
792Note that when using <code>cumulative</code>, the sum of the percentages
793reported may exceed 100%. The default (non-cumulative) behavior can
794be specified with the <code>noncumulative</code> parameter.</p>
795</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58796<dt class="hdlist1"><em>&lt;limit&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25797<dd>
798<p>An integer parameter specifies a cut-off percent (3% by default).
799Directories contributing less than this percentage of the changes
800are not shown in the output.</p>
801</dd>
802</dl>
803</div>
804</div>
805</div>
806<div class="paragraph">
807<p>Example: The following will count changed files, while ignoring
808directories with less than 10% of the total amount of changed files,
809and accumulating child directory counts in the parent directories:
810<code>--dirstat=files,10,cumulative</code>.</p>
811</div>
812</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58813<dt class="hdlist1"><code>--cumulative</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25814<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58815<p>Synonym for <code>--dirstat=cumulative</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25816</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58817<dt class="hdlist1"><code>--dirstat-by-file</code>[<code>=</code><em>&lt;param&gt;</em><code>,..</code>.]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25818<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58819<p>Synonym for <code>--dirstat=files,</code><em>&lt;param&gt;</em><code>,..</code>..</p>
Junio C Hamanob96f40a2024-08-01 00:57:25820</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58821<dt class="hdlist1"><code>--summary</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25822<dd>
823<p>Output a condensed summary of extended header information
824such as creations, renames and mode changes.</p>
825</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58826<dt class="hdlist1"><code>--patch-with-stat</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25827<dd>
Junio C Hamanodc392382024-10-11 18:57:29828<p>Synonym for <code>-p</code> <code>--stat</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25829</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58830<dt class="hdlist1"><code>-z</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25831<dd>
832<p>When <code>--raw</code>, <code>--numstat</code>, <code>--name-only</code> or <code>--name-status</code> has been
833given, do not munge pathnames and use NULs as output field terminators.</p>
834<div class="paragraph">
835<p>Without this option, pathnames with "unusual" characters are quoted as
836explained for the configuration variable <code>core.quotePath</code> (see
837<a href="git-config.html">git-config(1)</a>).</p>
838</div>
839</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58840<dt class="hdlist1"><code>--name-only</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25841<dd>
842<p>Show only the name of each changed file in the post-image tree.
843The file names are often encoded in UTF-8.
844For more information see the discussion about encoding in the <a href="git-log.html">git-log(1)</a>
845manual page.</p>
846</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58847<dt class="hdlist1"><code>--name-status</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25848<dd>
849<p>Show only the name(s) and status of each changed file. See the description
850of the <code>--diff-filter</code> option on what the status letters mean.
851Just like <code>--name-only</code> the file names are often encoded in UTF-8.</p>
852</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58853<dt class="hdlist1"><code>--submodule</code>[<code>=</code><em>&lt;format&gt;</em>]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25854<dd>
855<p>Specify how differences in submodules are shown. When specifying
Junio C Hamano7f7e6a42024-12-04 04:45:58856<code>--submodule=short</code> the <code>short</code> format is used. This format just
Junio C Hamanob96f40a2024-08-01 00:57:25857shows the names of the commits at the beginning and end of the range.
Junio C Hamano7f7e6a42024-12-04 04:45:58858When <code>--submodule</code> or <code>--submodule=log</code> is specified, the <code>log</code>
Junio C Hamanob96f40a2024-08-01 00:57:25859format is used. This format lists the commits in the range like
860<a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does. When <code>--submodule=diff</code>
Junio C Hamano7f7e6a42024-12-04 04:45:58861is specified, the <code>diff</code> format is used. This format shows an
Junio C Hamanob96f40a2024-08-01 00:57:25862inline diff of the changes in the submodule contents between the
Junio C Hamano7f7e6a42024-12-04 04:45:58863commit range. Defaults to <code>diff.submodule</code> or the <code>short</code> format
Junio C Hamanob96f40a2024-08-01 00:57:25864if the config option is unset.</p>
865</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58866<dt class="hdlist1"><code>--color</code>[<code>=</code><em>&lt;when&gt;</em>]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25867<dd>
868<p>Show colored diff.
Junio C Hamano7f7e6a42024-12-04 04:45:58869<code>--color</code> (i.e. without <code>=</code><em>&lt;when&gt;</em>) is the same as <code>--color=always</code>.
Junio C Hamanob96f40a2024-08-01 00:57:25870<em>&lt;when&gt;</em> can be one of <code>always</code>, <code>never</code>, or <code>auto</code>.
871It can be changed by the <code>color.ui</code> and <code>color.diff</code>
872configuration settings.</p>
873</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58874<dt class="hdlist1"><code>--no-color</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25875<dd>
876<p>Turn off colored diff.
877This can be used to override configuration settings.
878It is the same as <code>--color=never</code>.</p>
879</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58880<dt class="hdlist1"><code>--color-moved</code>[<code>=</code><em>&lt;mode&gt;</em>]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25881<dd>
882<p>Moved lines of code are colored differently.
883It can be changed by the <code>diff.colorMoved</code> configuration setting.
Junio C Hamano7f7e6a42024-12-04 04:45:58884The <em>&lt;mode&gt;</em> defaults to <code>no</code> if the option is not given
885and to <code>zebra</code> if the option with no mode is given.
Junio C Hamanob96f40a2024-08-01 00:57:25886The mode must be one of:</p>
887<div class="openblock">
888<div class="content">
889<div class="dlist">
890<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:58891<dt class="hdlist1"><code>no</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25892<dd>
893<p>Moved lines are not highlighted.</p>
894</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58895<dt class="hdlist1"><code>default</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25896<dd>
897<p>Is a synonym for <code>zebra</code>. This may change to a more sensible mode
898in the future.</p>
899</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58900<dt class="hdlist1"><code>plain</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25901<dd>
902<p>Any line that is added in one location and was removed
Junio C Hamano7f7e6a42024-12-04 04:45:58903in another location will be colored with <code>color.diff.newMoved</code>.
904Similarly <code>color.diff.oldMoved</code> will be used for removed lines
Junio C Hamanob96f40a2024-08-01 00:57:25905that are added somewhere else in the diff. This mode picks up any
906moved line, but it is not very useful in a review to determine
907if a block of code was moved without permutation.</p>
908</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58909<dt class="hdlist1"><code>blocks</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25910<dd>
911<p>Blocks of moved text of at least 20 alphanumeric characters
912are detected greedily. The detected blocks are
Junio C Hamano7f7e6a42024-12-04 04:45:58913painted using either the <code>color.diff.</code>(<code>old</code>|<code>new</code>)<code>Moved</code> color.
Junio C Hamanob96f40a2024-08-01 00:57:25914Adjacent blocks cannot be told apart.</p>
915</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58916<dt class="hdlist1"><code>zebra</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25917<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58918<p>Blocks of moved text are detected as in <code>blocks</code> mode. The blocks
919are painted using either the <code>color.diff.</code>(<code>old</code>|<code>new</code>)<code>Moved</code> color or
920<code>color.diff.</code>(<code>old</code>|<code>new</code>)<code>MovedAlternative</code>. The change between
Junio C Hamanob96f40a2024-08-01 00:57:25921the two colors indicates that a new block was detected.</p>
922</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58923<dt class="hdlist1"><code>dimmed-zebra</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25924<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58925<p>Similar to <code>zebra</code>, but additional dimming of uninteresting parts
Junio C Hamanob96f40a2024-08-01 00:57:25926of moved code is performed. The bordering lines of two adjacent
927blocks are considered interesting, the rest is uninteresting.
928<code>dimmed_zebra</code> is a deprecated synonym.</p>
929</dd>
930</dl>
931</div>
932</div>
933</div>
934</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58935<dt class="hdlist1"><code>--no-color-moved</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25936<dd>
937<p>Turn off move detection. This can be used to override configuration
938settings. It is the same as <code>--color-moved=no</code>.</p>
939</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58940<dt class="hdlist1"><code>--color-moved-ws=</code><em>&lt;mode&gt;</em><code>,..</code>.</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25941<dd>
942<p>This configures how whitespace is ignored when performing the
943move detection for <code>--color-moved</code>.
944It can be set by the <code>diff.colorMovedWS</code> configuration setting.
945These modes can be given as a comma separated list:</p>
946<div class="openblock">
947<div class="content">
948<div class="dlist">
949<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:58950<dt class="hdlist1"><code>no</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25951<dd>
952<p>Do not ignore whitespace when performing move detection.</p>
953</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58954<dt class="hdlist1"><code>ignore-space-at-eol</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25955<dd>
956<p>Ignore changes in whitespace at EOL.</p>
957</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58958<dt class="hdlist1"><code>ignore-space-change</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25959<dd>
960<p>Ignore changes in amount of whitespace. This ignores whitespace
961at line end, and considers all other sequences of one or
962more whitespace characters to be equivalent.</p>
963</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58964<dt class="hdlist1"><code>ignore-all-space</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25965<dd>
966<p>Ignore whitespace when comparing lines. This ignores differences
967even if one line has whitespace where the other line has none.</p>
968</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58969<dt class="hdlist1"><code>allow-indentation-change</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25970<dd>
971<p>Initially ignore any whitespace in the move detection, then
972group the moved code blocks only into a block if the change in
973whitespace is the same per line. This is incompatible with the
974other modes.</p>
975</dd>
976</dl>
977</div>
978</div>
979</div>
980</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58981<dt class="hdlist1"><code>--no-color-moved-ws</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25982<dd>
983<p>Do not ignore whitespace when performing move detection. This can be
984used to override configuration settings. It is the same as
985<code>--color-moved-ws=no</code>.</p>
986</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58987<dt class="hdlist1"><code>--word-diff</code>[<code>=</code><em>&lt;mode&gt;</em>]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:25988<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:58989<p>By default, words are delimited by whitespace; see
990<code>--word-diff-regex</code> below. The <em>&lt;mode&gt;</em> defaults to <code>plain</code>, and
Junio C Hamanob96f40a2024-08-01 00:57:25991must be one of:</p>
992<div class="openblock">
993<div class="content">
994<div class="dlist">
995<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:58996<dt class="hdlist1"><code>color</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25997<dd>
998<p>Highlight changed words using only colors. Implies <code>--color</code>.</p>
999</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581000<dt class="hdlist1"><code>plain</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251001<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581002<p>Show words as [<code>-removed-</code>] and {<code>added</code>}. Makes no
Junio C Hamanob96f40a2024-08-01 00:57:251003attempts to escape the delimiters if they appear in the input,
1004so the output may be ambiguous.</p>
1005</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581006<dt class="hdlist1"><code>porcelain</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251007<dd>
1008<p>Use a special line-based format intended for script
1009consumption. Added/removed/unchanged runs are printed in the
1010usual unified diff format, starting with a <code>+</code>/<code>-</code>/` `
1011character at the beginning of the line and extending to the
1012end of the line. Newlines in the input are represented by a
1013tilde <code>~</code> on a line of its own.</p>
1014</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581015<dt class="hdlist1"><code>none</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251016<dd>
1017<p>Disable word diff again.</p>
1018</dd>
1019</dl>
1020</div>
1021</div>
1022</div>
1023<div class="paragraph">
1024<p>Note that despite the name of the first mode, color is used to
1025highlight the changed parts in all modes if enabled.</p>
1026</div>
1027</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581028<dt class="hdlist1"><code>--word-diff-regex=</code><em>&lt;regex&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251029<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581030<p>Use <em>&lt;regex&gt;</em> to decide what a word is, instead of considering
Junio C Hamanob96f40a2024-08-01 00:57:251031runs of non-whitespace to be a word. Also implies
1032<code>--word-diff</code> unless it was already enabled.</p>
1033<div class="paragraph">
1034<p>Every non-overlapping match of the
Junio C Hamano7f7e6a42024-12-04 04:45:581035<em>&lt;regex&gt;</em> is considered a word. Anything between these matches is
Junio C Hamanob96f40a2024-08-01 00:57:251036considered whitespace and ignored(!) for the purposes of finding
Junio C Hamanodc392382024-10-11 18:57:291037differences. You may want to append |[<code>^</code>[<code>:space:</code>]] to your regular
Junio C Hamanob96f40a2024-08-01 00:57:251038expression to make sure that it matches all non-whitespace characters.
1039A match that contains a newline is silently truncated(!) at the
1040newline.</p>
1041</div>
1042<div class="paragraph">
1043<p>For example, <code>--word-diff-regex=.</code> will treat each character as a word
1044and, correspondingly, show differences character by character.</p>
1045</div>
1046<div class="paragraph">
1047<p>The regex can also be set via a diff driver or configuration option, see
1048<a href="gitattributes.html">gitattributes(5)</a> or <a href="git-config.html">git-config(1)</a>. Giving it explicitly
1049overrides any diff driver or configuration setting. Diff drivers
1050override configuration settings.</p>
1051</div>
1052</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581053<dt class="hdlist1"><code>--color-words</code>[<code>=</code><em>&lt;regex&gt;</em>]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251054<dd>
1055<p>Equivalent to <code>--word-diff=color</code> plus (if a regex was
Junio C Hamanodc392382024-10-11 18:57:291056specified) <code>--word-diff-regex=</code><em>&lt;regex&gt;</em>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251057</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581058<dt class="hdlist1"><code>--no-renames</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251059<dd>
1060<p>Turn off rename detection, even when the configuration
1061file gives the default to do so.</p>
1062</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581063<dt class="hdlist1"><code>--</code>[<code>no-</code>]<code>rename-empty</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251064<dd>
1065<p>Whether to use empty blobs as rename source.</p>
1066</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581067<dt class="hdlist1"><code>--check</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251068<dd>
1069<p>Warn if changes introduce conflict markers or whitespace errors.
1070What are considered whitespace errors is controlled by <code>core.whitespace</code>
1071configuration. By default, trailing whitespaces (including
1072lines that consist solely of whitespaces) and a space character
1073that is immediately followed by a tab character inside the
1074initial indent of the line are considered whitespace errors.
1075Exits with non-zero status if problems are found. Not compatible
Junio C Hamano7f7e6a42024-12-04 04:45:581076with <code>--exit-code</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251077</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581078<dt class="hdlist1"><code>--ws-error-highlight=</code><em>&lt;kind&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251079<dd>
1080<p>Highlight whitespace errors in the <code>context</code>, <code>old</code> or <code>new</code>
1081lines of the diff. Multiple values are separated by comma,
1082<code>none</code> resets previous values, <code>default</code> reset the list to
1083<code>new</code> and <code>all</code> is a shorthand for <code>old,new,context</code>. When
1084this option is not given, and the configuration variable
1085<code>diff.wsErrorHighlight</code> is not set, only whitespace errors in
1086<code>new</code> lines are highlighted. The whitespace errors are colored
1087with <code>color.diff.whitespace</code>.</p>
1088</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581089<dt class="hdlist1"><code>--full-index</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251090<dd>
1091<p>Instead of the first handful of characters, show the full
1092pre- and post-image blob object names on the "index"
1093line when generating patch format output.</p>
1094</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581095<dt class="hdlist1"><code>--binary</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251096<dd>
1097<p>In addition to <code>--full-index</code>, output a binary diff that
1098can be applied with <code>git-apply</code>.
1099Implies <code>--patch</code>.</p>
1100</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581101<dt class="hdlist1"><code>--abbrev</code>[<code>=</code><em>&lt;n&gt;</em>]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251102<dd>
1103<p>Instead of showing the full 40-byte hexadecimal object
1104name in diff-raw format output and diff-tree header
1105lines, show the shortest prefix that is at least <em>&lt;n&gt;</em>
1106hexdigits long that uniquely refers the object.
1107In diff-patch output format, <code>--full-index</code> takes higher
1108precedence, i.e. if <code>--full-index</code> is specified, full blob
1109names will be shown regardless of <code>--abbrev</code>.
Junio C Hamanodc392382024-10-11 18:57:291110Non default number of digits can be specified with <code>--abbrev=</code><em>&lt;n&gt;</em>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251111</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581112<dt class="hdlist1"><code>-B</code>[<em>&lt;n&gt;</em>][<code>/</code><em>&lt;m&gt;</em>]</dt>
1113<dt class="hdlist1"><code>--break-rewrites</code>[<code>=</code>[<em>&lt;n&gt;</em>][<code>/</code><em>&lt;m&gt;</em>]]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251114<dd>
1115<p>Break complete rewrite changes into pairs of delete and
1116create. This serves two purposes:</p>
1117<div class="paragraph">
1118<p>It affects the way a change that amounts to a total rewrite of a file
1119not as a series of deletion and insertion mixed together with a very
1120few lines that happen to match textually as the context, but as a
1121single deletion of everything old followed by a single insertion of
Junio C Hamano7f7e6a42024-12-04 04:45:581122everything new, and the number <em>&lt;m&gt;</em> controls this aspect of the <code>-B</code>
Junio C Hamanoa83f9122025-07-21 21:51:141123option (defaults to 60%). <code>-B/70%</code> specifies that less than 30% of the
Junio C Hamanob96f40a2024-08-01 00:57:251124original should remain in the result for Git to consider it a total
1125rewrite (i.e. otherwise the resulting patch will be a series of
1126deletion and insertion mixed together with context lines).</p>
1127</div>
1128<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:581129<p>When used with <code>-M</code>, a totally-rewritten file is also considered as the
1130source of a rename (usually <code>-M</code> only considers a file that disappeared
1131as the source of a rename), and the number <em>&lt;n&gt;</em> controls this aspect of
Junio C Hamanoa83f9122025-07-21 21:51:141132the <code>-B</code> option (defaults to 50%). <code>-B20%</code> specifies that a change with
Junio C Hamanob96f40a2024-08-01 00:57:251133addition and deletion compared to 20% or more of the file&#8217;s size are
1134eligible for being picked up as a possible source of a rename to
1135another file.</p>
1136</div>
1137</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581138<dt class="hdlist1"><code>-M</code>[<em>&lt;n&gt;</em>]</dt>
1139<dt class="hdlist1"><code>--find-renames</code>[<code>=</code><em>&lt;n&gt;</em>]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251140<dd>
1141<p>Detect renames.
Junio C Hamano7f7e6a42024-12-04 04:45:581142If <em>&lt;n&gt;</em> is specified, it is a threshold on the similarity
Junio C Hamanob96f40a2024-08-01 00:57:251143index (i.e. amount of addition/deletions compared to the
Junio C Hamanoa83f9122025-07-21 21:51:141144file&#8217;s size). For example, <code>-M90%</code> means Git should consider a
Junio C Hamanob96f40a2024-08-01 00:57:251145delete/add pair to be a rename if more than 90% of the file
Junio C Hamanoa83f9122025-07-21 21:51:141146hasn&#8217;t changed. Without a <code>%</code> sign, the number is to be read as
Junio C Hamanob96f40a2024-08-01 00:57:251147a fraction, with a decimal point before it. I.e., <code>-M5</code> becomes
Junio C Hamanoa83f9122025-07-21 21:51:1411480.5, and is thus the same as <code>-M50%</code>. Similarly, <code>-M05</code> is
1149the same as <code>-M5%</code>. To limit detection to exact renames, use
1150<code>-M100%</code>. The default similarity index is 50%.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251151</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581152<dt class="hdlist1"><code>-C</code>[<em>&lt;n&gt;</em>]</dt>
1153<dt class="hdlist1"><code>--find-copies</code>[<code>=</code><em>&lt;n&gt;</em>]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251154<dd>
1155<p>Detect copies as well as renames. See also <code>--find-copies-harder</code>.
Junio C Hamano7f7e6a42024-12-04 04:45:581156If <em>&lt;n&gt;</em> is specified, it has the same meaning as for <code>-M</code><em>&lt;n&gt;</em>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251157</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581158<dt class="hdlist1"><code>--find-copies-harder</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251159<dd>
1160<p>For performance reasons, by default, <code>-C</code> option finds copies only
1161if the original file of the copy was modified in the same
1162changeset. This flag makes the command
1163inspect unmodified files as candidates for the source of
1164copy. This is a very expensive operation for large
1165projects, so use it with caution. Giving more than one
1166<code>-C</code> option has the same effect.</p>
1167</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581168<dt class="hdlist1"><code>-D</code></dt>
1169<dt class="hdlist1"><code>--irreversible-delete</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251170<dd>
1171<p>Omit the preimage for deletes, i.e. print only the header but not
1172the diff between the preimage and <code>/dev/null</code>. The resulting patch
Junio C Hamanodc392382024-10-11 18:57:291173is not meant to be applied with <code>patch</code> or <code>git</code> <code>apply</code>; this is
Junio C Hamanob96f40a2024-08-01 00:57:251174solely for people who want to just concentrate on reviewing the
1175text after the change. In addition, the output obviously lacks
1176enough information to apply such a patch in reverse, even manually,
1177hence the name of the option.</p>
1178<div class="paragraph">
1179<p>When used together with <code>-B</code>, omit also the preimage in the deletion part
1180of a delete/create pair.</p>
1181</div>
1182</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581183<dt class="hdlist1"><code>-l</code><em>&lt;num&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251184<dd>
1185<p>The <code>-M</code> and <code>-C</code> options involve some preliminary steps that
1186can detect subsets of renames/copies cheaply, followed by an
1187exhaustive fallback portion that compares all remaining
1188unpaired destinations to all relevant sources. (For renames,
1189only remaining unpaired sources are relevant; for copies, all
1190original sources are relevant.) For N sources and
1191destinations, this exhaustive check is O(N^2). This option
1192prevents the exhaustive portion of rename/copy detection from
1193running if the number of source/destination files involved
Junio C Hamano7f7e6a42024-12-04 04:45:581194exceeds the specified number. Defaults to <code>diff.renameLimit</code>.
Junio C Hamanob96f40a2024-08-01 00:57:251195Note that a value of 0 is treated as unlimited.</p>
1196</dd>
Junio C Hamanoe03f5992025-04-23 22:24:291197<dt class="hdlist1"><code>--diff-filter=</code>[(<code>A</code>|<code>C</code>|<code>D</code>|<code>M</code>|<code>R</code>|<code>T</code>|<code>U</code>|<code>X</code>|<code>B</code>)<code>...</code>[<code>*</code>]]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251198<dd>
1199<p>Select only files that are Added (<code>A</code>), Copied (<code>C</code>),
1200Deleted (<code>D</code>), Modified (<code>M</code>), Renamed (<code>R</code>), have their
1201type (i.e. regular file, symlink, submodule, &#8230;&#8203;) changed (<code>T</code>),
1202are Unmerged (<code>U</code>), are
1203Unknown (<code>X</code>), or have had their pairing Broken (<code>B</code>).
1204Any combination of the filter characters (including none) can be used.
Junio C Hamanoe03f5992025-04-23 22:24:291205When <code>*</code> (All-or-none) is added to the combination, all
Junio C Hamanob96f40a2024-08-01 00:57:251206paths are selected if there is any file that matches
1207other criteria in the comparison; if there is no file
1208that matches other criteria, nothing is selected.</p>
1209<div class="paragraph">
1210<p>Also, these upper-case letters can be downcased to exclude. E.g.
1211<code>--diff-filter=ad</code> excludes added and deleted paths.</p>
1212</div>
1213<div class="paragraph">
1214<p>Note that not all diffs can feature all types. For instance, copied and
1215renamed entries cannot appear if detection for those types is disabled.</p>
1216</div>
1217</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581218<dt class="hdlist1"><code>-S</code><em>&lt;string&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251219<dd>
1220<p>Look for differences that change the number of occurrences of
Junio C Hamano7f7e6a42024-12-04 04:45:581221the specified <em>&lt;string&gt;</em> (i.e. addition/deletion) in a file.
Junio C Hamanob96f40a2024-08-01 00:57:251222Intended for the scripter&#8217;s use.</p>
1223<div class="paragraph">
1224<p>It is useful when you&#8217;re looking for an exact block of code (like a
1225struct), and want to know the history of that block since it first
1226came into being: use the feature iteratively to feed the interesting
1227block in the preimage back into <code>-S</code>, and keep going until you get the
1228very first version of the block.</p>
1229</div>
1230<div class="paragraph">
1231<p>Binary files are searched as well.</p>
1232</div>
1233</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581234<dt class="hdlist1"><code>-G</code><em>&lt;regex&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251235<dd>
1236<p>Look for differences whose patch text contains added/removed
Junio C Hamano7f7e6a42024-12-04 04:45:581237lines that match <em>&lt;regex&gt;</em>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251238<div class="paragraph">
Junio C Hamanodc392382024-10-11 18:57:291239<p>To illustrate the difference between <code>-S</code><em>&lt;regex&gt;</em> <code>--pickaxe-regex</code> and
1240<code>-G</code><em>&lt;regex&gt;</em>, consider a commit with the following diff in the same
Junio C Hamanob96f40a2024-08-01 00:57:251241file:</p>
1242</div>
1243<div class="listingblock">
1244<div class="content">
1245<pre>+ return frotz(nitfol, two-&gt;ptr, 1, 0);
1246...
1247- hit = frotz(nitfol, mf2.ptr, 1, 0);</pre>
1248</div>
1249</div>
1250<div class="paragraph">
Junio C Hamanodc392382024-10-11 18:57:291251<p>While <code>git</code> <code>log</code> <code>-G</code>"frotz\(<code>nitfol</code>" will show this commit, <code>git</code> <code>log</code>
1252<code>-S</code>"frotz\(<code>nitfol</code>" <code>--pickaxe-regex</code> will not (because the number of
Junio C Hamanob96f40a2024-08-01 00:57:251253occurrences of that string did not change).</p>
1254</div>
1255<div class="paragraph">
1256<p>Unless <code>--text</code> is supplied patches of binary files without a textconv
1257filter will be ignored.</p>
1258</div>
1259<div class="paragraph">
1260<p>See the <em>pickaxe</em> entry in <a href="gitdiffcore.html">gitdiffcore(7)</a> for more
1261information.</p>
1262</div>
1263</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581264<dt class="hdlist1"><code>--find-object=</code><em>&lt;object-id&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251265<dd>
1266<p>Look for differences that change the number of occurrences of
1267the specified object. Similar to <code>-S</code>, just the argument is different
1268in that it doesn&#8217;t search for a specific string but for a specific
1269object id.</p>
1270<div class="paragraph">
1271<p>The object can be a blob or a submodule commit. It implies the <code>-t</code> option in
1272<code>git-log</code> to also find trees.</p>
1273</div>
1274</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581275<dt class="hdlist1"><code>--pickaxe-all</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251276<dd>
1277<p>When <code>-S</code> or <code>-G</code> finds a change, show all the changes in that
1278changeset, not just the files that contain the change
Junio C Hamano7f7e6a42024-12-04 04:45:581279in <em>&lt;string&gt;</em>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251280</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581281<dt class="hdlist1"><code>--pickaxe-regex</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251282<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581283<p>Treat the <em>&lt;string&gt;</em> given to <code>-S</code> as an extended POSIX regular
Junio C Hamanob96f40a2024-08-01 00:57:251284expression to match.</p>
1285</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581286<dt class="hdlist1"><code>-O</code><em>&lt;orderfile&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251287<dd>
1288<p>Control the order in which files appear in the output.
1289This overrides the <code>diff.orderFile</code> configuration variable
1290(see <a href="git-config.html">git-config(1)</a>). To cancel <code>diff.orderFile</code>,
1291use <code>-O/dev/null</code>.</p>
1292<div class="paragraph">
1293<p>The output order is determined by the order of glob patterns in
Junio C Hamano7f7e6a42024-12-04 04:45:581294<em>&lt;orderfile&gt;</em>.
Junio C Hamanob96f40a2024-08-01 00:57:251295All files with pathnames that match the first pattern are output
1296first, all files with pathnames that match the second pattern (but not
1297the first) are output next, and so on.
1298All files with pathnames that do not match any pattern are output
1299last, as if there was an implicit match-all pattern at the end of the
1300file.
1301If multiple pathnames have the same rank (they match the same pattern
1302but no earlier patterns), their output order relative to each other is
1303the normal order.</p>
1304</div>
1305<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:581306<p><em>&lt;orderfile&gt;</em> is parsed as follows:</p>
Junio C Hamanob96f40a2024-08-01 00:57:251307</div>
1308<div class="openblock">
1309<div class="content">
1310<div class="ulist">
1311<ul>
1312<li>
1313<p>Blank lines are ignored, so they can be used as separators for
1314readability.</p>
1315</li>
1316<li>
Junio C Hamanodc392382024-10-11 18:57:291317<p>Lines starting with a hash ("#") are ignored, so they can be used
Junio C Hamanoe03f5992025-04-23 22:24:291318for comments. Add a backslash ("<code>\</code>") to the beginning of the
Junio C Hamanob96f40a2024-08-01 00:57:251319pattern if it starts with a hash.</p>
1320</li>
1321<li>
1322<p>Each other line contains a single pattern.</p>
1323</li>
1324</ul>
1325</div>
1326</div>
1327</div>
1328<div class="paragraph">
1329<p>Patterns have the same syntax and semantics as patterns used for
Junio C Hamano7f7e6a42024-12-04 04:45:581330<code>fnmatch</code>(3) without the <code>FNM_PATHNAME</code> flag, except a pathname also
Junio C Hamanob96f40a2024-08-01 00:57:251331matches a pattern if removing any number of the final pathname
Junio C Hamanoe03f5992025-04-23 22:24:291332components matches the pattern. For example, the pattern "<code>foo*bar</code>"
Junio C Hamanob96f40a2024-08-01 00:57:251333matches "<code>fooasdfbar</code>" and "<code>foo/bar/baz/asdf</code>" but not "<code>foobarx</code>".</p>
1334</div>
1335</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581336<dt class="hdlist1"><code>--skip-to=</code><em>&lt;file&gt;</em></dt>
1337<dt class="hdlist1"><code>--rotate-to=</code><em>&lt;file&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251338<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581339<p>Discard the files before the named <em>&lt;file&gt;</em> from the output
Junio C Hamanob96f40a2024-08-01 00:57:251340(i.e. <em>skip to</em>), or move them to the end of the output
1341(i.e. <em>rotate to</em>). These options were invented primarily for the use
Junio C Hamanodc392382024-10-11 18:57:291342of the <code>git</code> <code>difftool</code> command, and may not be very useful
Junio C Hamanob96f40a2024-08-01 00:57:251343otherwise.</p>
1344</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581345<dt class="hdlist1"><code>-R</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251346<dd>
1347<p>Swap two inputs; that is, show differences from index or
1348on-disk file to tree contents.</p>
1349</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581350<dt class="hdlist1"><code>--relative</code>[<code>=</code><em>&lt;path&gt;</em>]</dt>
1351<dt class="hdlist1"><code>--no-relative</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251352<dd>
1353<p>When run from a subdirectory of the project, it can be
1354told to exclude changes outside the directory and show
1355pathnames relative to it with this option. When you are
1356not in a subdirectory (e.g. in a bare repository), you
1357can name which subdirectory to make the output relative
Junio C Hamano7f7e6a42024-12-04 04:45:581358to by giving a <em>&lt;path&gt;</em> as an argument.
Junio C Hamanob96f40a2024-08-01 00:57:251359<code>--no-relative</code> can be used to countermand both <code>diff.relative</code> config
1360option and previous <code>--relative</code>.</p>
1361</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581362<dt class="hdlist1"><code>-a</code></dt>
1363<dt class="hdlist1"><code>--text</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251364<dd>
1365<p>Treat all files as text.</p>
1366</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581367<dt class="hdlist1"><code>--ignore-cr-at-eol</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251368<dd>
1369<p>Ignore carriage-return at the end of line when doing a comparison.</p>
1370</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581371<dt class="hdlist1"><code>--ignore-space-at-eol</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251372<dd>
1373<p>Ignore changes in whitespace at EOL.</p>
1374</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581375<dt class="hdlist1"><code>-b</code></dt>
1376<dt class="hdlist1"><code>--ignore-space-change</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251377<dd>
1378<p>Ignore changes in amount of whitespace. This ignores whitespace
1379at line end, and considers all other sequences of one or
1380more whitespace characters to be equivalent.</p>
1381</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581382<dt class="hdlist1"><code>-w</code></dt>
1383<dt class="hdlist1"><code>--ignore-all-space</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251384<dd>
1385<p>Ignore whitespace when comparing lines. This ignores
1386differences even if one line has whitespace where the other
1387line has none.</p>
1388</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581389<dt class="hdlist1"><code>--ignore-blank-lines</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251390<dd>
1391<p>Ignore changes whose lines are all blank.</p>
1392</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581393<dt class="hdlist1"><code>-I</code><em>&lt;regex&gt;</em></dt>
1394<dt class="hdlist1"><code>--ignore-matching-lines=</code><em>&lt;regex&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251395<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581396<p>Ignore changes whose all lines match <em>&lt;regex&gt;</em>. This option may
Junio C Hamanob96f40a2024-08-01 00:57:251397be specified more than once.</p>
1398</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581399<dt class="hdlist1"><code>--inter-hunk-context=</code><em>&lt;number&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251400<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581401<p>Show the context between diff hunks, up to the specified <em>&lt;number&gt;</em>
Junio C Hamanob96f40a2024-08-01 00:57:251402of lines, thereby fusing hunks that are close to each other.
1403Defaults to <code>diff.interHunkContext</code> or 0 if the config option
1404is unset.</p>
1405</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581406<dt class="hdlist1"><code>-W</code></dt>
1407<dt class="hdlist1"><code>--function-context</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251408<dd>
1409<p>Show whole function as context lines for each change.
1410The function names are determined in the same way as
Junio C Hamano7f7e6a42024-12-04 04:45:581411<code>git</code> <code>diff</code> works out patch hunk headers (see "Defining a
1412custom hunk-header" in <a href="gitattributes.html">gitattributes(5)</a>).</p>
Junio C Hamanob96f40a2024-08-01 00:57:251413</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581414<dt class="hdlist1"><code>--exit-code</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251415<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581416<p>Make the program exit with codes similar to <code>diff</code>(1).
Junio C Hamanob96f40a2024-08-01 00:57:251417That is, it exits with 1 if there were differences and
14180 means no differences.</p>
1419</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581420<dt class="hdlist1"><code>--quiet</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251421<dd>
1422<p>Disable all output of the program. Implies <code>--exit-code</code>.
1423Disables execution of external diff helpers whose exit code
1424is not trusted, i.e. their respective configuration option
Junio C Hamano7f7e6a42024-12-04 04:45:581425<code>diff.trustExitCode</code> or <code>diff.</code><em>&lt;driver&gt;</em>.<code>trustExitCode</code> or
Junio C Hamanob96f40a2024-08-01 00:57:251426environment variable <code>GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE</code> is
1427false.</p>
1428</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581429<dt class="hdlist1"><code>--ext-diff</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251430<dd>
1431<p>Allow an external diff helper to be executed. If you set an
1432external diff driver with <a href="gitattributes.html">gitattributes(5)</a>, you need
1433to use this option with <a href="git-log.html">git-log(1)</a> and friends.</p>
1434</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581435<dt class="hdlist1"><code>--no-ext-diff</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251436<dd>
1437<p>Disallow external diff drivers.</p>
1438</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581439<dt class="hdlist1"><code>--textconv</code></dt>
1440<dt class="hdlist1"><code>--no-textconv</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251441<dd>
1442<p>Allow (or disallow) external text conversion filters to be run
1443when comparing binary files. See <a href="gitattributes.html">gitattributes(5)</a> for
1444details. Because textconv filters are typically a one-way
1445conversion, the resulting diff is suitable for human
1446consumption, but cannot be applied. For this reason, textconv
1447filters are enabled by default only for <a href="git-diff.html">git-diff(1)</a> and
1448<a href="git-log.html">git-log(1)</a>, but not for <a href="git-format-patch.html">git-format-patch(1)</a> or
1449diff plumbing commands.</p>
1450</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581451<dt class="hdlist1"><code>--ignore-submodules</code>[<code>=</code>(<code>none</code>|<code>untracked</code>|<code>dirty</code>|<code>all</code>)]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251452<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581453<p>Ignore changes to submodules in the diff generation. <code>all</code> is the default.
1454Using <code>none</code> will consider the submodule modified when it either contains
1455untracked or modified files or its <code>HEAD</code> differs from the commit recorded
Junio C Hamanob96f40a2024-08-01 00:57:251456in the superproject and can be used to override any settings of the
Junio C Hamano7f7e6a42024-12-04 04:45:581457<code>ignore</code> option in <a href="git-config.html">git-config(1)</a> or <a href="gitmodules.html">gitmodules(5)</a>. When
1458<code>untracked</code> is used submodules are not considered dirty when they only
Junio C Hamanob96f40a2024-08-01 00:57:251459contain untracked content (but they are still scanned for modified
Junio C Hamano7f7e6a42024-12-04 04:45:581460content). Using <code>dirty</code> ignores all changes to the work tree of submodules,
Junio C Hamanob96f40a2024-08-01 00:57:251461only changes to the commits stored in the superproject are shown (this was
Junio C Hamano7f7e6a42024-12-04 04:45:581462the behavior until 1.7.0). Using <code>all</code> hides all changes to submodules.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251463</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581464<dt class="hdlist1"><code>--src-prefix=</code><em>&lt;prefix&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251465<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581466<p>Show the given source <em>&lt;prefix&gt;</em> instead of "a/".</p>
Junio C Hamanob96f40a2024-08-01 00:57:251467</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581468<dt class="hdlist1"><code>--dst-prefix=</code><em>&lt;prefix&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251469<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581470<p>Show the given destination <em>&lt;prefix&gt;</em> instead of "b/".</p>
Junio C Hamanob96f40a2024-08-01 00:57:251471</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581472<dt class="hdlist1"><code>--no-prefix</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251473<dd>
1474<p>Do not show any source or destination prefix.</p>
1475</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581476<dt class="hdlist1"><code>--default-prefix</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251477<dd>
1478<p>Use the default source and destination prefixes ("a/" and "b/").
1479This overrides configuration variables such as <code>diff.noprefix</code>,
1480<code>diff.srcPrefix</code>, <code>diff.dstPrefix</code>, and <code>diff.mnemonicPrefix</code>
Junio C Hamano7f7e6a42024-12-04 04:45:581481(see <a href="git-config.html">git-config(1)</a>).</p>
Junio C Hamanob96f40a2024-08-01 00:57:251482</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581483<dt class="hdlist1"><code>--line-prefix=</code><em>&lt;prefix&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251484<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581485<p>Prepend an additional <em>&lt;prefix&gt;</em> to every line of output.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251486</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581487<dt class="hdlist1"><code>--ita-invisible-in-index</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251488<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581489<p>By default entries added by <code>git</code> <code>add</code> <code>-N</code> appear as an existing
1490empty file in <code>git</code> <code>diff</code> and a new file in <code>git</code> <code>diff</code> <code>--cached</code>.
1491This option makes the entry appear as a new file in <code>git</code> <code>diff</code>
1492and non-existent in <code>git</code> <code>diff</code> <code>--cached</code>. This option could be
Junio C Hamanob96f40a2024-08-01 00:57:251493reverted with <code>--ita-visible-in-index</code>. Both options are
1494experimental and could be removed in future.</p>
1495</dd>
1496</dl>
1497</div>
1498<div class="paragraph">
1499<p>For more detailed explanation on these common options, see also
1500<a href="gitdiffcore.html">gitdiffcore(7)</a>.</p>
1501</div>
1502<div class="dlist">
1503<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:581504<dt class="hdlist1"><code>-1</code></dt>
1505<dt class="hdlist1"><code>--base</code></dt>
1506<dt class="hdlist1"><code>-2</code></dt>
1507<dt class="hdlist1"><code>--ours</code></dt>
1508<dt class="hdlist1"><code>-3</code></dt>
1509<dt class="hdlist1"><code>--theirs</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251510<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581511<p>Compare the working tree with</p>
1512<div class="openblock">
1513<div class="content">
1514<div class="ulist">
1515<ul>
1516<li>
1517<p>the "base" version (stage #1) when using <code>-1</code> or <code>--base</code>,</p>
1518</li>
1519<li>
1520<p>"our branch" (stage #2) when using <code>-2</code> or <code>--ours</code>, or</p>
1521</li>
1522<li>
1523<p>"their branch" (stage #3) when using <code>-3</code> or <code>--theirs</code>.</p>
1524</li>
1525</ul>
1526</div>
1527</div>
1528</div>
1529<div class="paragraph">
1530<p>The index contains these stages only for unmerged entries i.e.
Junio C Hamanob96f40a2024-08-01 00:57:251531while resolving conflicts. See <a href="git-read-tree.html">git-read-tree(1)</a>
1532section "3-Way Merge" for detailed information.</p>
Junio C Hamano7f7e6a42024-12-04 04:45:581533</div>
Junio C Hamanob96f40a2024-08-01 00:57:251534</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581535<dt class="hdlist1"><code>-0</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251536<dd>
1537<p>Omit diff output for unmerged entries and just show
1538"Unmerged". Can be used only when comparing the working tree
1539with the index.</p>
1540</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581541<dt class="hdlist1"><em>&lt;path&gt;</em>...</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251542<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581543<p>The <em>&lt;path&gt;</em> parameters, when given, are used to limit
Junio C Hamanob96f40a2024-08-01 00:57:251544the diff to the named paths (you can give directory
1545names and get diff for all files under them).</p>
1546</dd>
1547</dl>
1548</div>
1549</div>
1550</div>
1551<div class="sect1">
1552<h2 id="_raw_output_format">Raw output format</h2>
1553<div class="sectionbody">
1554<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:581555<p>The raw output format from <code>git-diff-index</code>, <code>git-diff-tree</code>,
1556<code>git-diff-files</code> and <code>git</code> <code>diff</code> <code>--raw</code> are very similar.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251557</div>
1558<div class="paragraph">
1559<p>These commands all compare two sets of things; what is
1560compared differs:</p>
1561</div>
1562<div class="dlist">
1563<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:581564<dt class="hdlist1"><code>git-diff-index</code> <em>&lt;tree-ish&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251565<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581566<p>compares the <em>&lt;tree-ish&gt;</em> and the files on the filesystem.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251567</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581568<dt class="hdlist1"><code>git-diff-index</code> <code>--cached</code> <em>&lt;tree-ish&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:251569<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581570<p>compares the <em>&lt;tree-ish&gt;</em> and the index.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251571</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581572<dt class="hdlist1"><code>git-diff-tree</code> [<code>-r</code>] <em>&lt;tree-ish-1&gt;</em> <em>&lt;tree-ish-2&gt;</em> [<em>&lt;pattern&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251573<dd>
1574<p>compares the trees named by the two arguments.</p>
1575</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:581576<dt class="hdlist1"><code>git-diff-files</code> [<em>&lt;pattern&gt;</em>...]</dt>
Junio C Hamanob96f40a2024-08-01 00:57:251577<dd>
1578<p>compares the index and the files on the filesystem.</p>
1579</dd>
1580</dl>
1581</div>
1582<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:581583<p>The <code>git-diff-tree</code> command begins its output by printing the hash of
Junio C Hamanob96f40a2024-08-01 00:57:251584what is being compared. After that, all the commands print one output
1585line per changed file.</p>
1586</div>
1587<div class="paragraph">
1588<p>An output line is formatted this way:</p>
1589</div>
1590<div class="listingblock">
1591<div class="content">
1592<pre>in-place edit :100644 100644 bcd1234 0123456 M file0
1593copy-edit :100644 100644 abcd123 1234567 C68 file1 file2
1594rename-edit :100644 100644 abcd123 1234567 R86 file1 file3
1595create :000000 100644 0000000 1234567 A file4
1596delete :100644 000000 1234567 0000000 D file5
1597unmerged :000000 000000 0000000 0000000 U file6</pre>
1598</div>
1599</div>
1600<div class="paragraph">
1601<p>That is, from the left to the right:</p>
1602</div>
1603<div class="olist arabic">
1604<ol class="arabic">
1605<li>
1606<p>a colon.</p>
1607</li>
1608<li>
1609<p>mode for "src"; 000000 if creation or unmerged.</p>
1610</li>
1611<li>
1612<p>a space.</p>
1613</li>
1614<li>
1615<p>mode for "dst"; 000000 if deletion or unmerged.</p>
1616</li>
1617<li>
1618<p>a space.</p>
1619</li>
1620<li>
1621<p>sha1 for "src"; 0{40} if creation or unmerged.</p>
1622</li>
1623<li>
1624<p>a space.</p>
1625</li>
1626<li>
1627<p>sha1 for "dst"; 0{40} if deletion, unmerged or "work tree out of sync with the index".</p>
1628</li>
1629<li>
1630<p>a space.</p>
1631</li>
1632<li>
1633<p>status, followed by optional "score" number.</p>
1634</li>
1635<li>
1636<p>a tab or a NUL when <code>-z</code> option is used.</p>
1637</li>
1638<li>
1639<p>path for "src"</p>
1640</li>
1641<li>
1642<p>a tab or a NUL when <code>-z</code> option is used; only exists for C or R.</p>
1643</li>
1644<li>
1645<p>path for "dst"; only exists for C or R.</p>
1646</li>
1647<li>
1648<p>an LF or a NUL when <code>-z</code> option is used, to terminate the record.</p>
1649</li>
1650</ol>
1651</div>
1652<div class="paragraph">
1653<p>Possible status letters are:</p>
1654</div>
1655<div class="ulist">
1656<ul>
1657<li>
Junio C Hamano7f7e6a42024-12-04 04:45:581658<p><code>A</code>: addition of a file</p>
Junio C Hamanob96f40a2024-08-01 00:57:251659</li>
1660<li>
Junio C Hamano7f7e6a42024-12-04 04:45:581661<p><code>C</code>: copy of a file into a new one</p>
Junio C Hamanob96f40a2024-08-01 00:57:251662</li>
1663<li>
Junio C Hamano7f7e6a42024-12-04 04:45:581664<p><code>D</code>: deletion of a file</p>
Junio C Hamanob96f40a2024-08-01 00:57:251665</li>
1666<li>
Junio C Hamano7f7e6a42024-12-04 04:45:581667<p><code>M</code>: modification of the contents or mode of a file</p>
Junio C Hamanob96f40a2024-08-01 00:57:251668</li>
1669<li>
Junio C Hamano7f7e6a42024-12-04 04:45:581670<p><code>R</code>: renaming of a file</p>
Junio C Hamanob96f40a2024-08-01 00:57:251671</li>
1672<li>
Junio C Hamano7f7e6a42024-12-04 04:45:581673<p><code>T</code>: change in the type of the file (regular file, symbolic link or submodule)</p>
Junio C Hamanob96f40a2024-08-01 00:57:251674</li>
1675<li>
Junio C Hamano7f7e6a42024-12-04 04:45:581676<p><code>U</code>: file is unmerged (you must complete the merge before it can
Junio C Hamanob96f40a2024-08-01 00:57:251677be committed)</p>
1678</li>
1679<li>
Junio C Hamano7f7e6a42024-12-04 04:45:581680<p><code>X</code>: "unknown" change type (most probably a bug, please report it)</p>
Junio C Hamanob96f40a2024-08-01 00:57:251681</li>
1682</ul>
1683</div>
1684<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:581685<p>Status letters <code>C</code> and <code>R</code> are always followed by a score (denoting the
Junio C Hamanob96f40a2024-08-01 00:57:251686percentage of similarity between the source and target of the move or
Junio C Hamano7f7e6a42024-12-04 04:45:581687copy). Status letter <code>M</code> may be followed by a score (denoting the
Junio C Hamanob96f40a2024-08-01 00:57:251688percentage of dissimilarity) for file rewrites.</p>
1689</div>
1690<div class="paragraph">
1691<p>The sha1 for "dst" is shown as all 0&#8217;s if a file on the filesystem
1692is out of sync with the index.</p>
1693</div>
1694<div class="paragraph">
1695<p>Example:</p>
1696</div>
1697<div class="listingblock">
1698<div class="content">
1699<pre>:100644 100644 5be4a4a 0000000 M file.c</pre>
1700</div>
1701</div>
1702<div class="paragraph">
1703<p>Without the <code>-z</code> option, pathnames with "unusual" characters are
1704quoted as explained for the configuration variable <code>core.quotePath</code>
1705(see <a href="git-config.html">git-config(1)</a>). Using <code>-z</code> the filename is output
1706verbatim and the line is terminated by a NUL byte.</p>
1707</div>
1708</div>
1709</div>
1710<div class="sect1">
1711<h2 id="_diff_format_for_merges">diff format for merges</h2>
1712<div class="sectionbody">
1713<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:581714<p><code>git-diff-tree</code>, <code>git-diff-files</code> and <code>git-diff</code> <code>--raw</code>
Junio C Hamanob96f40a2024-08-01 00:57:251715can take <code>-c</code> or <code>--cc</code> option
1716to generate diff output also for merge commits. The output differs
1717from the format described above in the following way:</p>
1718</div>
1719<div class="olist arabic">
1720<ol class="arabic">
1721<li>
1722<p>there is a colon for each parent</p>
1723</li>
1724<li>
1725<p>there are more "src" modes and "src" sha1</p>
1726</li>
1727<li>
1728<p>status is concatenated status characters for each parent</p>
1729</li>
1730<li>
1731<p>no optional "score" number</p>
1732</li>
1733<li>
1734<p>tab-separated pathname(s) of the file</p>
1735</li>
1736</ol>
1737</div>
1738<div class="paragraph">
1739<p>For <code>-c</code> and <code>--cc</code>, only the destination or final path is shown even
1740if the file was renamed on any side of history. With
1741<code>--combined-all-paths</code>, the name of the path in each parent is shown
1742followed by the name of the path in the merge commit.</p>
1743</div>
1744<div class="paragraph">
1745<p>Examples for <code>-c</code> and <code>--cc</code> without <code>--combined-all-paths</code>:</p>
1746</div>
1747<div class="listingblock">
1748<div class="content">
1749<pre>::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c
1750::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM bar.sh
1751::100644 100644 100644 e07d6c5 9042e82 ee91881 RR phooey.c</pre>
1752</div>
1753</div>
1754<div class="paragraph">
1755<p>Examples when <code>--combined-all-paths</code> added to either <code>-c</code> or <code>--cc</code>:</p>
1756</div>
1757<div class="listingblock">
1758<div class="content">
1759<pre>::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c desc.c desc.c
1760::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM foo.sh bar.sh bar.sh
1761::100644 100644 100644 e07d6c5 9042e82 ee91881 RR fooey.c fuey.c phooey.c</pre>
1762</div>
1763</div>
1764<div class="paragraph">
1765<p>Note that <em>combined diff</em> lists only files which were modified from
1766all parents.</p>
1767</div>
1768</div>
1769</div>
1770<div class="sect1">
1771<h2 id="generate_patch_text_with_p">Generating patch text with -p</h2>
1772<div class="sectionbody">
1773<div class="paragraph">
1774<p>Running
1775<a href="git-diff.html">git-diff(1)</a>,
1776<a href="git-log.html">git-log(1)</a>,
1777<a href="git-show.html">git-show(1)</a>,
1778<a href="git-diff-index.html">git-diff-index(1)</a>,
1779<a href="git-diff-tree.html">git-diff-tree(1)</a>, or
1780<a href="git-diff-files.html">git-diff-files(1)</a>
1781with the <code>-p</code> option produces patch text.
1782You can customize the creation of patch text via the
1783<code>GIT_EXTERNAL_DIFF</code> and the <code>GIT_DIFF_OPTS</code> environment variables
1784(see <a href="git.html">git(1)</a>), and the <code>diff</code> attribute (see <a href="gitattributes.html">gitattributes(5)</a>).</p>
1785</div>
1786<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:581787<p>What the <code>-p</code> option produces is slightly different from the traditional
Junio C Hamanob96f40a2024-08-01 00:57:251788diff format:</p>
1789</div>
1790<div class="olist arabic">
1791<ol class="arabic">
1792<li>
1793<p>It is preceded by a "git diff" header that looks like this:</p>
1794<div class="literalblock">
1795<div class="content">
1796<pre>diff --git a/file1 b/file2</pre>
1797</div>
1798</div>
1799<div class="paragraph">
1800<p>The <code>a/</code> and <code>b/</code> filenames are the same unless rename/copy is
1801involved. Especially, even for a creation or a deletion,
1802<code>/dev/null</code> is <em>not</em> used in place of the <code>a/</code> or <code>b/</code> filenames.</p>
1803</div>
1804<div class="paragraph">
1805<p>When a rename/copy is involved, <code>file1</code> and <code>file2</code> show the
1806name of the source file of the rename/copy and the name of
1807the file that the rename/copy produces, respectively.</p>
1808</div>
1809</li>
1810<li>
1811<p>It is followed by one or more extended header lines:</p>
Junio C Hamano7f7e6a42024-12-04 04:45:581812<div class="verseblock">
1813<pre class="content"><code>old</code> <code>mode</code> <em>&lt;mode&gt;</em>
1814<code>new</code> <code>mode</code> <em>&lt;mode&gt;</em>
1815<code>deleted</code> <code>file</code> <code>mode</code> <em>&lt;mode&gt;</em>
1816<code>new</code> <code>file</code> <code>mode</code> <em>&lt;mode&gt;</em>
1817<code>copy</code> <code>from</code> <em>&lt;path&gt;</em>
1818<code>copy</code> <code>to</code> <em>&lt;path&gt;</em>
1819<code>rename</code> <code>from</code> <em>&lt;path&gt;</em>
1820<code>rename</code> <code>to</code> <em>&lt;path&gt;</em>
1821<code>similarity</code> <code>index</code> <em>&lt;number&gt;</em>
1822<code>dissimilarity</code> <code>index</code> <em>&lt;number&gt;</em>
Junio C Hamanoe03f5992025-04-23 22:24:291823<code>index</code> <em>&lt;hash&gt;</em><code>..</code><em>&lt;hash&gt;</em> <em>&lt;mode&gt;</em></pre>
Junio C Hamanob96f40a2024-08-01 00:57:251824</div>
1825<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:581826<p>File modes <em>&lt;mode&gt;</em> are printed as 6-digit octal numbers including the file type
Junio C Hamanob96f40a2024-08-01 00:57:251827and file permission bits.</p>
1828</div>
1829<div class="paragraph">
1830<p>Path names in extended headers do not include the <code>a/</code> and <code>b/</code> prefixes.</p>
1831</div>
1832<div class="paragraph">
1833<p>The similarity index is the percentage of unchanged lines, and
1834the dissimilarity index is the percentage of changed lines. It
1835is a rounded down integer, followed by a percent sign. The
1836similarity index value of 100% is thus reserved for two equal
1837files, while 100% dissimilarity means that no line from the old
1838file made it into the new one.</p>
1839</div>
1840<div class="paragraph">
1841<p>The index line includes the blob object names before and after the change.
Junio C Hamano7f7e6a42024-12-04 04:45:581842The <em>&lt;mode&gt;</em> is included if the file mode does not change; otherwise,
Junio C Hamanob96f40a2024-08-01 00:57:251843separate lines indicate the old and the new mode.</p>
1844</div>
1845</li>
1846<li>
1847<p>Pathnames with "unusual" characters are quoted as explained for
1848the configuration variable <code>core.quotePath</code> (see
1849<a href="git-config.html">git-config(1)</a>).</p>
1850</li>
1851<li>
1852<p>All the <code>file1</code> files in the output refer to files before the
1853commit, and all the <code>file2</code> files refer to files after the commit.
1854It is incorrect to apply each change to each file sequentially. For
1855example, this patch will swap a and b:</p>
1856<div class="literalblock">
1857<div class="content">
1858<pre>diff --git a/a b/b
1859rename from a
1860rename to b
1861diff --git a/b b/a
1862rename from b
1863rename to a</pre>
1864</div>
1865</div>
1866</li>
1867<li>
1868<p>Hunk headers mention the name of the function to which the hunk
1869applies. See "Defining a custom hunk-header" in
1870<a href="gitattributes.html">gitattributes(5)</a> for details of how to tailor this to
1871specific languages.</p>
1872</li>
1873</ol>
1874</div>
1875</div>
1876</div>
1877<div class="sect1">
1878<h2 id="_combined_diff_format">Combined diff format</h2>
1879<div class="sectionbody">
1880<div class="paragraph">
1881<p>Any diff-generating command can take the <code>-c</code> or <code>--cc</code> option to
1882produce a <em>combined diff</em> when showing a merge. This is the default
1883format when showing merges with <a href="git-diff.html">git-diff(1)</a> or
1884<a href="git-show.html">git-show(1)</a>. Note also that you can give suitable
1885<code>--diff-merges</code> option to any of these commands to force generation of
1886diffs in a specific format.</p>
1887</div>
1888<div class="paragraph">
1889<p>A "combined diff" format looks like this:</p>
1890</div>
1891<div class="listingblock">
1892<div class="content">
1893<pre>diff --combined describe.c
1894index fabadb8,cc95eb0..4866510
1895--- a/describe.c
1896+++ b/describe.c
1897@@@ -98,20 -98,12 +98,20 @@@
1898 return (a_date &gt; b_date) ? -1 : (a_date == b_date) ? 0 : 1;
1899 }
1900
1901- static void describe(char *arg)
1902 -static void describe(struct commit *cmit, int last_one)
1903++static void describe(char *arg, int last_one)
1904 {
1905 + unsigned char sha1[20];
1906 + struct commit *cmit;
1907 struct commit_list *list;
1908 static int initialized = 0;
1909 struct commit_name *n;
1910
1911 + if (get_sha1(arg, sha1) &lt; 0)
1912 + usage(describe_usage);
1913 + cmit = lookup_commit_reference(sha1);
1914 + if (!cmit)
1915 + usage(describe_usage);
1916 +
1917 if (!initialized) {
1918 initialized = 1;
1919 for_each_ref(get_name);</pre>
1920</div>
1921</div>
1922<div class="olist arabic">
1923<ol class="arabic">
1924<li>
1925<p>It is preceded by a "git diff" header, that looks like
1926this (when the <code>-c</code> option is used):</p>
1927<div class="literalblock">
1928<div class="content">
1929<pre>diff --combined file</pre>
1930</div>
1931</div>
1932<div class="paragraph">
1933<p>or like this (when the <code>--cc</code> option is used):</p>
1934</div>
1935<div class="literalblock">
1936<div class="content">
1937<pre>diff --cc file</pre>
1938</div>
1939</div>
1940</li>
1941<li>
1942<p>It is followed by one or more extended header lines
1943(this example shows a merge with two parents):</p>
Junio C Hamano7f7e6a42024-12-04 04:45:581944<div class="verseblock">
Junio C Hamanoe03f5992025-04-23 22:24:291945<pre class="content"><code>index</code> <em>&lt;hash&gt;</em><code>,</code><em>&lt;hash&gt;</em><code>..</code><em>&lt;hash&gt;</em>
Junio C Hamanoa6442842025-06-18 21:56:061946<code>mode</code> <em>&lt;mode&gt;</em><code>,</code><em>&lt;mode&gt;</em><code>..</code><em>&lt;mode&gt;</em>
1947<code>new</code> <code>file</code> <code>mode</code> <em>&lt;mode&gt;</em>
Junio C Hamano7f7e6a42024-12-04 04:45:581948<code>deleted</code> <code>file</code> <code>mode</code> <em>&lt;mode&gt;</em><code>,</code><em>&lt;mode&gt;</em></pre>
Junio C Hamanob96f40a2024-08-01 00:57:251949</div>
1950<div class="paragraph">
Junio C Hamanodc392382024-10-11 18:57:291951<p>The <code>mode</code> <em>&lt;mode&gt;</em><code>,</code><em>&lt;mode&gt;</em><code>..</code><em>&lt;mode&gt;</em> line appears only if at least one of
Junio C Hamanob96f40a2024-08-01 00:57:251952the &lt;mode&gt; is different from the rest. Extended headers with
1953information about detected content movement (renames and
1954copying detection) are designed to work with the diff of two
Junio C Hamano7f7e6a42024-12-04 04:45:581955<em>&lt;tree-ish&gt;</em> and are not used by combined diff format.</p>
Junio C Hamanob96f40a2024-08-01 00:57:251956</div>
1957</li>
1958<li>
1959<p>It is followed by a two-line from-file/to-file header:</p>
1960<div class="literalblock">
1961<div class="content">
1962<pre>--- a/file
1963+++ b/file</pre>
1964</div>
1965</div>
1966<div class="paragraph">
1967<p>Similar to the two-line header for the traditional <em>unified</em> diff
1968format, <code>/dev/null</code> is used to signal created or deleted
1969files.</p>
1970</div>
1971<div class="paragraph">
1972<p>However, if the --combined-all-paths option is provided, instead of a
1973two-line from-file/to-file, you get an N+1 line from-file/to-file header,
1974where N is the number of parents in the merge commit:</p>
1975</div>
1976<div class="literalblock">
1977<div class="content">
1978<pre>--- a/file
1979--- a/file
1980--- a/file
1981+++ b/file</pre>
1982</div>
1983</div>
1984<div class="paragraph">
1985<p>This extended format can be useful if rename or copy detection is
1986active, to allow you to see the original name of the file in different
1987parents.</p>
1988</div>
1989</li>
1990<li>
1991<p>Chunk header format is modified to prevent people from
Junio C Hamanodc392382024-10-11 18:57:291992accidentally feeding it to <code>patch</code> <code>-p1</code>. Combined diff format
Junio C Hamanob96f40a2024-08-01 00:57:251993was created for review of merge commit changes, and was not
1994meant to be applied. The change is similar to the change in the
1995extended <em>index</em> header:</p>
1996<div class="literalblock">
1997<div class="content">
1998<pre>@@@ &lt;from-file-range&gt; &lt;from-file-range&gt; &lt;to-file-range&gt; @@@</pre>
1999</div>
2000</div>
2001<div class="paragraph">
2002<p>There are (number of parents + 1) <code>@</code> characters in the chunk
2003header for combined diff format.</p>
2004</div>
2005</li>
2006</ol>
2007</div>
2008<div class="paragraph">
2009<p>Unlike the traditional <em>unified</em> diff format, which shows two
2010files A and B with a single column that has <code>-</code> (minus&#8201;&#8212;&#8201;appears in A but removed in B), <code>+</code> (plus&#8201;&#8212;&#8201;missing in A but
Junio C Hamanodc392382024-10-11 18:57:292011added to B), or " " (space&#8201;&#8212;&#8201;unchanged) prefix, this format
Junio C Hamanob96f40a2024-08-01 00:57:252012compares two or more files file1, file2,&#8230;&#8203; with one file X, and
2013shows how X differs from each of fileN. One column for each of
2014fileN is prepended to the output line to note how X&#8217;s line is
2015different from it.</p>
2016</div>
2017<div class="paragraph">
2018<p>A <code>-</code> character in the column N means that the line appears in
2019fileN but it does not appear in the result. A <code>+</code> character
2020in the column N means that the line appears in the result,
2021and fileN does not have that line (in other words, the line was
2022added, from the point of view of that parent).</p>
2023</div>
2024<div class="paragraph">
2025<p>In the above example output, the function signature was changed
2026from both files (hence two <code>-</code> removals from both file1 and
2027file2, plus <code>++</code> to mean one line that was added does not appear
2028in either file1 or file2). Also, eight other lines are the same
2029from file1 but do not appear in file2 (hence prefixed with <code>+</code>).</p>
2030</div>
2031<div class="paragraph">
Junio C Hamanodc392382024-10-11 18:57:292032<p>When shown by <code>git</code> <code>diff-tree</code> <code>-c</code>, it compares the parents of a
Junio C Hamanob96f40a2024-08-01 00:57:252033merge commit with the merge result (i.e. file1..fileN are the
Junio C Hamanodc392382024-10-11 18:57:292034parents). When shown by <code>git</code> <code>diff-files</code> <code>-c</code>, it compares the
Junio C Hamanob96f40a2024-08-01 00:57:252035two unresolved merge parents with the working tree file
2036(i.e. file1 is stage 2 aka "our version", file2 is stage 3 aka
2037"their version").</p>
2038</div>
2039</div>
2040</div>
2041<div class="sect1">
2042<h2 id="_other_diff_formats">other diff formats</h2>
2043<div class="sectionbody">
2044<div class="paragraph">
2045<p>The <code>--summary</code> option describes newly added, deleted, renamed and
Junio C Hamano7f7e6a42024-12-04 04:45:582046copied files. The <code>--stat</code> option adds <code>diffstat</code>(1) graph to the
Junio C Hamanob96f40a2024-08-01 00:57:252047output. These options can be combined with other options, such as
2048<code>-p</code>, and are meant for human consumption.</p>
2049</div>
2050<div class="paragraph">
2051<p>When showing a change that involves a rename or a copy, <code>--stat</code> output
2052formats the pathnames compactly by combining common prefix and suffix of
2053the pathnames. For example, a change that moves <code>arch/i386/Makefile</code> to
2054<code>arch/x86/Makefile</code> while modifying 4 lines will be shown like this:</p>
2055</div>
2056<div class="listingblock">
2057<div class="content">
2058<pre>arch/{i386 =&gt; x86}/Makefile | 4 +--</pre>
2059</div>
2060</div>
2061<div class="paragraph">
2062<p>The <code>--numstat</code> option gives the diffstat(1) information but is designed
2063for easier machine consumption. An entry in <code>--numstat</code> output looks
2064like this:</p>
2065</div>
2066<div class="listingblock">
2067<div class="content">
2068<pre>1 2 README
20693 1 arch/{i386 =&gt; x86}/Makefile</pre>
2070</div>
2071</div>
2072<div class="paragraph">
2073<p>That is, from left to right:</p>
2074</div>
2075<div class="olist arabic">
2076<ol class="arabic">
2077<li>
2078<p>the number of added lines;</p>
2079</li>
2080<li>
2081<p>a tab;</p>
2082</li>
2083<li>
2084<p>the number of deleted lines;</p>
2085</li>
2086<li>
2087<p>a tab;</p>
2088</li>
2089<li>
2090<p>pathname (possibly with rename/copy information);</p>
2091</li>
2092<li>
2093<p>a newline.</p>
2094</li>
2095</ol>
2096</div>
2097<div class="paragraph">
2098<p>When <code>-z</code> output option is in effect, the output is formatted this way:</p>
2099</div>
2100<div class="listingblock">
2101<div class="content">
2102<pre>1 2 README NUL
21033 1 NUL arch/i386/Makefile NUL arch/x86/Makefile NUL</pre>
2104</div>
2105</div>
2106<div class="paragraph">
2107<p>That is:</p>
2108</div>
2109<div class="olist arabic">
2110<ol class="arabic">
2111<li>
2112<p>the number of added lines;</p>
2113</li>
2114<li>
2115<p>a tab;</p>
2116</li>
2117<li>
2118<p>the number of deleted lines;</p>
2119</li>
2120<li>
2121<p>a tab;</p>
2122</li>
2123<li>
2124<p>a NUL (only exists if renamed/copied);</p>
2125</li>
2126<li>
2127<p>pathname in preimage;</p>
2128</li>
2129<li>
2130<p>a NUL (only exists if renamed/copied);</p>
2131</li>
2132<li>
2133<p>pathname in postimage (only exists if renamed/copied);</p>
2134</li>
2135<li>
2136<p>a NUL.</p>
2137</li>
2138</ol>
2139</div>
2140<div class="paragraph">
2141<p>The extra <code>NUL</code> before the preimage path in renamed case is to allow
2142scripts that read the output to tell if the current record being read is
2143a single-path record or a rename/copy record without reading ahead.
2144After reading added and deleted lines, reading up to <code>NUL</code> would yield
2145the pathname, but if that is <code>NUL</code>, the record will show two paths.</p>
2146</div>
2147</div>
2148</div>
2149<div class="sect1">
2150<h2 id="_examples">EXAMPLES</h2>
2151<div class="sectionbody">
2152<div class="dlist">
2153<dl>
2154<dt class="hdlist1">Various ways to check your working tree</dt>
2155<dd>
2156<div class="listingblock">
2157<div class="content">
2158<pre>$ git diff <b class="conum">(1)</b>
2159$ git diff --cached <b class="conum">(2)</b>
2160$ git diff HEAD <b class="conum">(3)</b>
2161$ git diff AUTO_MERGE <b class="conum">(4)</b></pre>
2162</div>
2163</div>
2164<div class="colist arabic">
2165<ol>
2166<li>
2167<p>Changes in the working tree not yet staged for the next commit.</p>
2168</li>
2169<li>
2170<p>Changes between the index and your last commit; what you
Junio C Hamanodc392382024-10-11 18:57:292171would be committing if you run <code>git</code> <code>commit</code> without <code>-a</code> option.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252172</li>
2173<li>
2174<p>Changes in the working tree since your last commit; what you
Junio C Hamanodc392382024-10-11 18:57:292175would be committing if you run <code>git</code> <code>commit</code> <code>-a</code></p>
Junio C Hamanob96f40a2024-08-01 00:57:252176</li>
2177<li>
2178<p>Changes in the working tree you&#8217;ve made to resolve textual
2179conflicts so far.</p>
2180</li>
2181</ol>
2182</div>
2183</dd>
2184<dt class="hdlist1">Comparing with arbitrary commits</dt>
2185<dd>
2186<div class="listingblock">
2187<div class="content">
2188<pre>$ git diff test <b class="conum">(1)</b>
2189$ git diff HEAD -- ./test <b class="conum">(2)</b>
2190$ git diff HEAD^ HEAD <b class="conum">(3)</b></pre>
2191</div>
2192</div>
2193<div class="colist arabic">
2194<ol>
2195<li>
2196<p>Instead of using the tip of the current branch, compare with the
2197tip of "test" branch.</p>
2198</li>
2199<li>
2200<p>Instead of comparing with the tip of "test" branch, compare with
2201the tip of the current branch, but limit the comparison to the
2202file "test".</p>
2203</li>
2204<li>
2205<p>Compare the version before the last commit and the last commit.</p>
2206</li>
2207</ol>
2208</div>
2209</dd>
2210<dt class="hdlist1">Comparing branches</dt>
2211<dd>
2212<div class="listingblock">
2213<div class="content">
2214<pre>$ git diff topic master <b class="conum">(1)</b>
2215$ git diff topic..master <b class="conum">(2)</b>
2216$ git diff topic...master <b class="conum">(3)</b></pre>
2217</div>
2218</div>
2219<div class="colist arabic">
2220<ol>
2221<li>
2222<p>Changes between the tips of the topic and the master branches.</p>
2223</li>
2224<li>
2225<p>Same as above.</p>
2226</li>
2227<li>
2228<p>Changes that occurred on the master branch since when the topic
2229branch was started off it.</p>
2230</li>
2231</ol>
2232</div>
2233</dd>
2234<dt class="hdlist1">Limiting the diff output</dt>
2235<dd>
2236<div class="listingblock">
2237<div class="content">
2238<pre>$ git diff --diff-filter=MRC <b class="conum">(1)</b>
2239$ git diff --name-status <b class="conum">(2)</b>
2240$ git diff arch/i386 include/asm-i386 <b class="conum">(3)</b></pre>
2241</div>
2242</div>
2243<div class="colist arabic">
2244<ol>
2245<li>
2246<p>Show only modification, rename, and copy, but not addition
2247or deletion.</p>
2248</li>
2249<li>
2250<p>Show only names and the nature of change, but not actual
2251diff output.</p>
2252</li>
2253<li>
2254<p>Limit diff output to named subtrees.</p>
2255</li>
2256</ol>
2257</div>
2258</dd>
2259<dt class="hdlist1">Munging the diff output</dt>
2260<dd>
2261<div class="listingblock">
2262<div class="content">
2263<pre>$ git diff --find-copies-harder -B -C <b class="conum">(1)</b>
2264$ git diff -R <b class="conum">(2)</b></pre>
2265</div>
2266</div>
2267<div class="colist arabic">
2268<ol>
2269<li>
2270<p>Spend extra cycles to find renames, copies and complete
2271rewrites (very expensive).</p>
2272</li>
2273<li>
2274<p>Output diff in reverse.</p>
2275</li>
2276</ol>
2277</div>
2278</dd>
2279</dl>
2280</div>
2281</div>
2282</div>
2283<div class="sect1">
2284<h2 id="_configuration">CONFIGURATION</h2>
2285<div class="sectionbody">
2286<div class="paragraph">
2287<p>Everything below this line in this section is selectively included
2288from the <a href="git-config.html">git-config(1)</a> documentation. The content is the same
2289as what&#8217;s found there:</p>
2290</div>
2291<div class="dlist">
2292<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:582293<dt class="hdlist1"><code>diff.autoRefreshIndex</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252294<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582295<p>When using <code>git</code> <code>diff</code> to compare with work tree
Junio C Hamanob96f40a2024-08-01 00:57:252296files, do not consider stat-only changes as changed.
Junio C Hamanodc392382024-10-11 18:57:292297Instead, silently run <code>git</code> <code>update-index</code> <code>--refresh</code> to
Junio C Hamanob96f40a2024-08-01 00:57:252298update the cached stat information for paths whose
2299contents in the work tree match the contents in the
Junio C Hamano7f7e6a42024-12-04 04:45:582300index. This option defaults to <code>true</code>. Note that this
2301affects only <code>git</code> <code>diff</code> Porcelain, and not lower level
2302<code>diff</code> commands such as <code>git</code> <code>diff-files</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252303</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582304<dt class="hdlist1"><code>diff.dirstat</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252305<dd>
2306<p>A comma separated list of <code>--dirstat</code> parameters specifying the
Junio C Hamano7f7e6a42024-12-04 04:45:582307default behavior of the <code>--dirstat</code> option to <code>git</code> <code>diff</code> and friends.
2308The defaults can be overridden on the command line
2309(using <code>--dirstat=</code><em>&lt;param&gt;</em><code>,..</code>.). The fallback defaults
Junio C Hamanob96f40a2024-08-01 00:57:252310(when not changed by <code>diff.dirstat</code>) are <code>changes,noncumulative,3</code>.
2311The following parameters are available:</p>
2312<div class="openblock">
2313<div class="content">
2314<div class="dlist">
2315<dl>
2316<dt class="hdlist1"><code>changes</code></dt>
2317<dd>
2318<p>Compute the dirstat numbers by counting the lines that have been
2319removed from the source, or added to the destination. This ignores
2320the amount of pure code movements within a file. In other words,
2321rearranging lines in a file is not counted as much as other changes.
2322This is the default behavior when no parameter is given.</p>
2323</dd>
2324<dt class="hdlist1"><code>lines</code></dt>
2325<dd>
2326<p>Compute the dirstat numbers by doing the regular line-based diff
2327analysis, and summing the removed/added line counts. (For binary
2328files, count 64-byte chunks instead, since binary files have no
2329natural concept of lines). This is a more expensive <code>--dirstat</code>
2330behavior than the <code>changes</code> behavior, but it does count rearranged
2331lines within a file as much as other changes. The resulting output
Junio C Hamanoe03f5992025-04-23 22:24:292332is consistent with what you get from the other <code>--*stat</code> options.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252333</dd>
2334<dt class="hdlist1"><code>files</code></dt>
2335<dd>
2336<p>Compute the dirstat numbers by counting the number of files changed.
2337Each changed file counts equally in the dirstat analysis. This is
2338the computationally cheapest <code>--dirstat</code> behavior, since it does
2339not have to look at the file contents at all.</p>
2340</dd>
2341<dt class="hdlist1"><code>cumulative</code></dt>
2342<dd>
2343<p>Count changes in a child directory for the parent directory as well.
2344Note that when using <code>cumulative</code>, the sum of the percentages
2345reported may exceed 100%. The default (non-cumulative) behavior can
2346be specified with the <code>noncumulative</code> parameter.</p>
2347</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582348<dt class="hdlist1"><em>&lt;limit&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252349<dd>
2350<p>An integer parameter specifies a cut-off percent (3% by default).
2351Directories contributing less than this percentage of the changes
2352are not shown in the output.</p>
2353</dd>
2354</dl>
2355</div>
2356</div>
2357</div>
2358<div class="paragraph">
2359<p>Example: The following will count changed files, while ignoring
2360directories with less than 10% of the total amount of changed files,
2361and accumulating child directory counts in the parent directories:
2362<code>files,10,cumulative</code>.</p>
2363</div>
2364</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582365<dt class="hdlist1"><code>diff.statNameWidth</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252366<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582367<p>Limit the width of the filename part in <code>--stat</code> output. If set, applies
2368to all commands generating <code>--stat</code> output except <code>format-patch</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252369</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582370<dt class="hdlist1"><code>diff.statGraphWidth</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252371<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582372<p>Limit the width of the graph part in <code>--stat</code> output. If set, applies
2373to all commands generating <code>--stat</code> output except <code>format-patch</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252374</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582375<dt class="hdlist1"><code>diff.context</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252376<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582377<p>Generate diffs with <em>&lt;n&gt;</em> lines of context instead of the default
2378of 3. This value is overridden by the <code>-U</code> option.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252379</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582380<dt class="hdlist1"><code>diff.interHunkContext</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252381<dd>
2382<p>Show the context between diff hunks, up to the specified number
2383of lines, thereby fusing the hunks that are close to each other.
2384This value serves as the default for the <code>--inter-hunk-context</code>
2385command line option.</p>
2386</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582387<dt class="hdlist1"><code>diff.external</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252388<dd>
2389<p>If this config variable is set, diff generation is not
2390performed using the internal diff machinery, but using the
Junio C Hamano7f7e6a42024-12-04 04:45:582391given command. Can be overridden with the <code>GIT_EXTERNAL_DIFF</code>
Junio C Hamanob96f40a2024-08-01 00:57:252392environment variable. The command is called with parameters
2393as described under "git Diffs" in <a href="git.html">git(1)</a>. Note: if
2394you want to use an external diff program only on a subset of
2395your files, you might want to use <a href="gitattributes.html">gitattributes(5)</a> instead.</p>
2396</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582397<dt class="hdlist1"><code>diff.trustExitCode</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252398<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582399<p>If this boolean value is set to <code>true</code> then the
Junio C Hamanob96f40a2024-08-01 00:57:252400<code>diff.external</code> command is expected to return exit code
24010 if it considers the input files to be equal or 1 if it
Junio C Hamano7f7e6a42024-12-04 04:45:582402considers them to be different, like <code>diff</code>(1).
2403If it is set to <code>false</code>, which is the default, then the command
2404is expected to return exit code <code>0</code> regardless of equality.
Junio C Hamanob96f40a2024-08-01 00:57:252405Any other exit code causes Git to report a fatal error.</p>
2406</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582407<dt class="hdlist1"><code>diff.ignoreSubmodules</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252408<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582409<p>Sets the default value of <code>--ignore-submodules</code>. Note that this
2410affects only <code>git</code> <code>diff</code> Porcelain, and not lower level <code>diff</code>
2411commands such as <code>git</code> <code>diff-files</code>. <code>git</code> <code>checkout</code>
2412and <code>git</code> <code>switch</code> also honor
Junio C Hamanob96f40a2024-08-01 00:57:252413this setting when reporting uncommitted changes. Setting it to
Junio C Hamano7f7e6a42024-12-04 04:45:582414<code>all</code> disables the submodule summary normally shown by <code>git</code> <code>commit</code>
2415and <code>git</code> <code>status</code> when <code>status.submoduleSummary</code> is set unless it is
2416overridden by using the <code>--ignore-submodules</code> command-line option.
2417The <code>git</code> <code>submodule</code> commands are not affected by this setting.
Junio C Hamanob96f40a2024-08-01 00:57:252418By default this is set to untracked so that any untracked
2419submodules are ignored.</p>
2420</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582421<dt class="hdlist1"><code>diff.mnemonicPrefix</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252422<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582423<p>If set, <code>git</code> <code>diff</code> uses a prefix pair that is different from the
2424standard <code>a/</code> and <code>b/</code> depending on what is being compared. When
Junio C Hamanob96f40a2024-08-01 00:57:252425this configuration is in effect, reverse diff output also swaps
2426the order of the prefixes:</p>
2427<div class="dlist">
2428<dl>
Junio C Hamanodc392382024-10-11 18:57:292429<dt class="hdlist1"><code>git</code> <code>diff</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252430<dd>
2431<p>compares the (i)ndex and the (w)ork tree;</p>
2432</dd>
Junio C Hamanodc392382024-10-11 18:57:292433<dt class="hdlist1"><code>git</code> <code>diff</code> <code>HEAD</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252434<dd>
2435<p>compares a (c)ommit and the (w)ork tree;</p>
2436</dd>
Junio C Hamanodc392382024-10-11 18:57:292437<dt class="hdlist1"><code>git</code> <code>diff</code> <code>--cached</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252438<dd>
2439<p>compares a (c)ommit and the (i)ndex;</p>
2440</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582441<dt class="hdlist1"><code>git</code> <code>diff</code> <code>HEAD:</code><em>&lt;file1&gt;</em> <em>&lt;file2&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252442<dd>
2443<p>compares an (o)bject and a (w)ork tree entity;</p>
2444</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582445<dt class="hdlist1"><code>git</code> <code>diff</code> <code>--no-index</code> <em>&lt;a&gt;</em> <em>&lt;b&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252446<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582447<p>compares two non-git things <em>&lt;a&gt;</em> and <em>&lt;b&gt;</em>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252448</dd>
2449</dl>
2450</div>
2451</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582452<dt class="hdlist1"><code>diff.noPrefix</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252453<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582454<p>If set, <code>git</code> <code>diff</code> does not show any source or destination prefix.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252455</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582456<dt class="hdlist1"><code>diff.srcPrefix</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252457<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582458<p>If set, <code>git</code> <code>diff</code> uses this source prefix. Defaults to <code>a/</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252459</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582460<dt class="hdlist1"><code>diff.dstPrefix</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252461<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582462<p>If set, <code>git</code> <code>diff</code> uses this destination prefix. Defaults to <code>b/</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252463</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582464<dt class="hdlist1"><code>diff.relative</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252465<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582466<p>If set to <code>true</code>, <code>git</code> <code>diff</code> does not show changes outside of the directory
Junio C Hamanob96f40a2024-08-01 00:57:252467and show pathnames relative to the current directory.</p>
2468</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582469<dt class="hdlist1"><code>diff.orderFile</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252470<dd>
2471<p>File indicating how to order files within a diff.
Junio C Hamano7f7e6a42024-12-04 04:45:582472See the <code>-O</code> option for details.
Junio C Hamanob96f40a2024-08-01 00:57:252473If <code>diff.orderFile</code> is a relative pathname, it is treated as
2474relative to the top of the working tree.</p>
2475</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582476<dt class="hdlist1"><code>diff.renameLimit</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252477<dd>
2478<p>The number of files to consider in the exhaustive portion of
Junio C Hamano7f7e6a42024-12-04 04:45:582479copy/rename detection; equivalent to the <code>git</code> <code>diff</code> option
Junio C Hamanob96f40a2024-08-01 00:57:252480<code>-l</code>. If not set, the default value is currently 1000. This
2481setting has no effect if rename detection is turned off.</p>
2482</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582483<dt class="hdlist1"><code>diff.renames</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252484<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582485<p>Whether and how Git detects renames. If set to <code>false</code>,
2486rename detection is disabled. If set to <code>true</code>, basic rename
2487detection is enabled. If set to <code>copies</code> or <code>copy</code>, Git will
2488detect copies, as well. Defaults to <code>true</code>. Note that this
2489affects only <code>git</code> <code>diff</code> Porcelain like <a href="git-diff.html">git-diff(1)</a> and
Junio C Hamanob96f40a2024-08-01 00:57:252490<a href="git-log.html">git-log(1)</a>, and not lower level commands such as
2491<a href="git-diff-files.html">git-diff-files(1)</a>.</p>
2492</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582493<dt class="hdlist1"><code>diff.suppressBlankEmpty</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252494<dd>
2495<p>A boolean to inhibit the standard behavior of printing a space
Junio C Hamano7f7e6a42024-12-04 04:45:582496before each empty output line. Defaults to <code>false</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252497</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582498<dt class="hdlist1"><code>diff.submodule</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252499<dd>
2500<p>Specify the format in which differences in submodules are
Junio C Hamano7f7e6a42024-12-04 04:45:582501shown. The <code>short</code> format just shows the names of the commits
2502at the beginning and end of the range. The <code>log</code> format lists
Junio C Hamanob96f40a2024-08-01 00:57:252503the commits in the range like <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code>
Junio C Hamano7f7e6a42024-12-04 04:45:582504does. The <code>diff</code> format shows an inline diff of the changed
2505contents of the submodule. Defaults to <code>short</code>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252506</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582507<dt class="hdlist1"><code>diff.wordRegex</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252508<dd>
2509<p>A POSIX Extended Regular Expression used to determine what is a "word"
2510when performing word-by-word difference calculations. Character
2511sequences that match the regular expression are "words", all other
2512characters are <strong>ignorable</strong> whitespace.</p>
2513</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582514<dt class="hdlist1"><code>diff.</code><em>&lt;driver&gt;</em><code>.command</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252515<dd>
2516<p>The custom diff driver command. See <a href="gitattributes.html">gitattributes(5)</a>
2517for details.</p>
2518</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582519<dt class="hdlist1"><code>diff.</code><em>&lt;driver&gt;</em><code>.trustExitCode</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252520<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582521<p>If this boolean value is set to <code>true</code> then the
Junio C Hamanodc392382024-10-11 18:57:292522<code>diff.</code><em>&lt;driver&gt;</em><code>.command</code> command is expected to return exit code
Junio C Hamanob96f40a2024-08-01 00:57:2525230 if it considers the input files to be equal or 1 if it
Junio C Hamano7f7e6a42024-12-04 04:45:582524considers them to be different, like <code>diff</code>(1).
2525If it is set to <code>false</code>, which is the default, then the command
Junio C Hamanob96f40a2024-08-01 00:57:252526is expected to return exit code 0 regardless of equality.
2527Any other exit code causes Git to report a fatal error.</p>
2528</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582529<dt class="hdlist1"><code>diff.</code><em>&lt;driver&gt;</em><code>.xfuncname</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252530<dd>
2531<p>The regular expression that the diff driver should use to
2532recognize the hunk header. A built-in pattern may also be used.
2533See <a href="gitattributes.html">gitattributes(5)</a> for details.</p>
2534</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582535<dt class="hdlist1"><code>diff.</code><em>&lt;driver&gt;</em><code>.binary</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252536<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582537<p>Set this option to <code>true</code> to make the diff driver treat files as
Junio C Hamanob96f40a2024-08-01 00:57:252538binary. See <a href="gitattributes.html">gitattributes(5)</a> for details.</p>
2539</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582540<dt class="hdlist1"><code>diff.</code><em>&lt;driver&gt;</em><code>.textconv</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252541<dd>
2542<p>The command that the diff driver should call to generate the
2543text-converted version of a file. The result of the
2544conversion is used to generate a human-readable diff. See
2545<a href="gitattributes.html">gitattributes(5)</a> for details.</p>
2546</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582547<dt class="hdlist1"><code>diff.</code><em>&lt;driver&gt;</em><code>.wordRegex</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252548<dd>
2549<p>The regular expression that the diff driver should use to
2550split words in a line. See <a href="gitattributes.html">gitattributes(5)</a> for
2551details.</p>
2552</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582553<dt class="hdlist1"><code>diff.</code><em>&lt;driver&gt;</em><code>.cachetextconv</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252554<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582555<p>Set this option to <code>true</code> to make the diff driver cache the text
Junio C Hamanob96f40a2024-08-01 00:57:252556conversion outputs. See <a href="gitattributes.html">gitattributes(5)</a> for details.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252557</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582558<dt class="hdlist1"><code>diff.indentHeuristic</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252559<dd>
2560<p>Set this option to <code>false</code> to disable the default heuristics
2561that shift diff hunk boundaries to make patches easier to read.</p>
2562</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582563<dt class="hdlist1"><code>diff.algorithm</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252564<dd>
2565<p>Choose a diff algorithm. The variants are as follows:</p>
2566<div class="openblock">
2567<div class="content">
2568<div class="dlist">
2569<dl>
Junio C Hamano7f7e6a42024-12-04 04:45:582570<dt class="hdlist1"><code>default</code></dt>
2571<dt class="hdlist1"><code>myers</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252572<dd>
2573<p>The basic greedy diff algorithm. Currently, this is the default.</p>
2574</dd>
2575<dt class="hdlist1"><code>minimal</code></dt>
2576<dd>
2577<p>Spend extra time to make sure the smallest possible diff is
2578produced.</p>
2579</dd>
2580<dt class="hdlist1"><code>patience</code></dt>
2581<dd>
2582<p>Use "patience diff" algorithm when generating patches.</p>
2583</dd>
2584<dt class="hdlist1"><code>histogram</code></dt>
2585<dd>
2586<p>This algorithm extends the patience algorithm to "support
2587low-occurrence common elements".</p>
2588</dd>
2589</dl>
2590</div>
2591</div>
2592</div>
2593</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582594<dt class="hdlist1"><code>diff.wsErrorHighlight</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252595<dd>
2596<p>Highlight whitespace errors in the <code>context</code>, <code>old</code> or <code>new</code>
2597lines of the diff. Multiple values are separated by comma,
2598<code>none</code> resets previous values, <code>default</code> reset the list to
2599<code>new</code> and <code>all</code> is a shorthand for <code>old,new,context</code>. The
2600whitespace errors are colored with <code>color.diff.whitespace</code>.
Junio C Hamanodc392382024-10-11 18:57:292601The command line option <code>--ws-error-highlight=</code><em>&lt;kind&gt;</em>
Junio C Hamanob96f40a2024-08-01 00:57:252602overrides this setting.</p>
2603</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582604<dt class="hdlist1"><code>diff.colorMoved</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252605<dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582606<p>If set to either a valid <em>&lt;mode&gt;</em> or a <code>true</code> value, moved lines
2607in a diff are colored differently.
2608For details of valid modes see <code>--color-moved</code>.
2609If simply set to <code>true</code> the default color mode will be used. When
2610set to <code>false</code>, moved lines are not colored.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252611</dd>
Junio C Hamano7f7e6a42024-12-04 04:45:582612<dt class="hdlist1"><code>diff.colorMovedWS</code></dt>
Junio C Hamanob96f40a2024-08-01 00:57:252613<dd>
2614<p>When moved lines are colored using e.g. the <code>diff.colorMoved</code> setting,
Junio C Hamano7f7e6a42024-12-04 04:45:582615this option controls the mode how spaces are treated.
2616For details of valid modes see <code>--color-moved-ws</code> in <a href="git-diff.html">git-diff(1)</a>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:252617</dd>
2618</dl>
2619</div>
2620</div>
2621</div>
2622<div class="sect1">
2623<h2 id="_see_also">SEE ALSO</h2>
2624<div class="sectionbody">
2625<div class="paragraph">
Junio C Hamano7f7e6a42024-12-04 04:45:582626<p><code>diff</code>(1),
Junio C Hamanob96f40a2024-08-01 00:57:252627<a href="git-difftool.html">git-difftool(1)</a>,
2628<a href="git-log.html">git-log(1)</a>,
2629<a href="gitdiffcore.html">gitdiffcore(7)</a>,
2630<a href="git-format-patch.html">git-format-patch(1)</a>,
2631<a href="git-apply.html">git-apply(1)</a>,
2632<a href="git-show.html">git-show(1)</a></p>
2633</div>
2634</div>
2635</div>
2636<div class="sect1">
2637<h2 id="_git">GIT</h2>
2638<div class="sectionbody">
2639<div class="paragraph">
2640<p>Part of the <a href="git.html">git(1)</a> suite</p>
2641</div>
2642</div>
2643</div>
2644</div>
2645<div id="footer">
2646<div id="footer-text">
Junio C Hamanoa83f9122025-07-21 21:51:142647Last updated 2025-06-24 11:24:02 -0700
Junio C Hamanob96f40a2024-08-01 00:57:252648</div>
2649</div>
2650</body>
2651</html>