2 <html xmlns=
"http://www.w3.org/1999/xhtml" lang=
"en">
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"/>
7 <meta name=
"generator" content=
"Asciidoctor 2.0.20"/>
8 <title>git-reset(
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"/>
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"; */
14 html{font-family:sans-serif;-webkit-text-size-adjust:
100%}
16 a:focus{outline:thin dotted}
17 a:active,a:hover{outline:
0}
18 h1{font-size:
2em;margin:
.67em
0}
19 b,strong{font-weight:bold}
21 abbr[title]{cursor:help;border-bottom:
1px dotted #dddddf;text-decoration:none}
22 dfn{font-style:italic}
24 mark{background:#ff0;color:#
000}
25 code,kbd,pre,samp{font-family:monospace;font-size:
1em}
26 pre{white-space:pre-wrap}
27 q{quotes:
"\201C" "\201D" "\2018" "\2019"}
29 sub,sup{font-size:
75%;line-height:
0;position:relative;vertical-align:baseline}
33 svg:not(:root){overflow:hidden}
35 audio,video{display:inline-block}
36 audio:not([controls]){display:none;height:
0}
37 fieldset{border:
1px solid silver;margin:
0 2px;padding:
.35em
.625em
.75em}
38 legend{border:
0;padding:
0}
39 button,input,select,textarea{font-family:inherit;font-size:
100%;margin:
0}
40 button,input{line-height:normal}
41 button,select{text-transform:none}
42 button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
43 button[disabled],html input[disabled]{cursor:default}
44 input[type=checkbox],input[type=radio]{padding:
0}
45 button::-moz-focus-inner,input::-moz-focus-inner{border:
0;padding:
0}
46 textarea{overflow:auto;vertical-align:top}
47 table{border-collapse:collapse;border-spacing:
0}
48 *,::before,::after{box-sizing:border-box}
49 html,body{font-size:
100%}
50 body{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}
51 a:hover{cursor:pointer}
52 img,object,embed{max-width:
100%;height:auto}
53 object,embed{height:
100%}
54 img{-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}
62 img,object,svg{display:inline-block;vertical-align:middle}
63 textarea{height:auto;min-height:
50px}
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}
66 div,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}
67 a{color:#
2156a5;text-decoration:underline;line-height:inherit}
68 a:hover,a:focus{color:#
1d4b8f}
70 p{line-height:
1.6;margin-bottom:
1.25em;text-rendering:optimizeLegibility}
71 p aside{font-size:
.875em;line-height:
1.35;font-style:italic}
72 h1,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}
73 h1 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}
75 h2{font-size:
1.6875em}
76 h3,#toctitle,.sidebarblock
>.content
>.title{font-size:
1.375em}
77 h4,h5{font-size:
1.125em}
79 hr{border:solid #dddddf;border-width:
1px
0 0;clear:both;margin:
1.25em
0 1.1875em}
80 em,i{font-style:italic;line-height:inherit}
81 strong,b{font-weight:bold;line-height:inherit}
82 small{font-size:
60%;line-height:inherit}
83 code{font-family:
"Droid Sans Mono",
"DejaVu Sans Mono",monospace;font-weight:
400;color:rgba(
0,
0,
0,
.9)}
84 ul,ol,dl{line-height:
1.6;margin-bottom:
1.25em;list-style-position:outside;font-family:inherit}
85 ul,ol{margin-left:
1.5em}
86 ul li ul,ul li ol{margin-left:
1.25em;margin-bottom:
0}
87 ul.circle{list-style-type:circle}
88 ul.disc{list-style-type:disc}
89 ul.square{list-style-type:square}
90 ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
91 ol li ul,ol li ol{margin-left:
1.25em;margin-bottom:
0}
92 dl dt{margin-bottom:
.3125em;font-weight:bold}
93 dl dd{margin-bottom:
1.25em}
94 blockquote{margin:
0 0 1.25em;padding:
.5625em
1.25em
0 1.1875em;border-left:
1px solid #ddd}
95 blockquote,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}
98 h2{font-size:
2.3125em}
99 h3,#toctitle,.sidebarblock
>.content
>.title{font-size:
1.6875em}
100 h4{font-size:
1.4375em}}
101 table{background:#fff;margin-bottom:
1.25em;border:
1px solid #dedede;word-wrap:normal}
102 table thead,table tfoot{background:#f7f8f7}
103 table 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}
104 table tr th,table tr td{padding:
.5625em
.625em;font-size:inherit;color:rgba(
0,
0,
0,
.8)}
105 table tr.even,table tr.alt{background:#f8f8f7}
106 table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:
1.6}
107 h1,h2,h3,#toctitle,.sidebarblock
>.content
>.title,h4,h5,h6{line-height:
1.2;word-spacing:-
.05em}
108 h1 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}
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}
117 pre{color:rgba(
0,
0,
0,
.9);font-family:
"Droid Sans Mono",
"DejaVu Sans Mono",monospace;line-height:
1.45;text-rendering:optimizeSpeed}
118 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
119 pre
>code{display:block}
120 pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
121 em em{font-style:normal}
122 strong strong{font-weight:
400}
123 .keyseq{color:rgba(
51,
51,
51,
.8)}
124 kbd{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}
132 b.button::before,b.button::after{position:relative;top:-
1px;font-weight:
400}
133 b.button::before{content:
"[";padding:
0 3px
0 2px}
134 b.button::after{content:
"]";padding:
0 2px
0 3px}
135 p 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}
143 #header
>h1:only-child,body.toc2 #header
>h1:nth-last-child(
2){border-bottom:
1px solid #dddddf;padding-bottom:
8px}
144 #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}
164 body.toc2{padding-left:
15em;padding-right:
0}
165 #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}
166 #toc.toc2 #toctitle{margin-top:
0;margin-bottom:
.8rem;font-size:
1.2em}
167 #toc.toc2
>ul{font-size:
.9em;margin-bottom:
0}
168 #toc.toc2 ul ul{margin-left:
0;padding-left:
1em}
169 #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:
0;margin-top:
.5em;margin-bottom:
.5em}
170 body.toc2.toc-right{padding-left:
0;padding-right:
15em}
171 body.toc2.toc-right #toc.toc2{border-right-width:
0;border-left:
1px solid #e7e7e9;left:auto;right:
0}}
172 @media screen and (min-width:
1280px){body.toc2{padding-left:
20em;padding-right:
0}
173 #toc.toc2{width:
20em}
174 #toc.toc2 #toctitle{font-size:
1.375em}
175 #toc.toc2
>ul{font-size:
.95em}
176 #toc.toc2 ul ul{padding-left:
1.25em}
177 body.toc2.toc-right{padding-left:
0;padding-right:
20em}}
178 #content #toc{border:
1px solid #e0e0dc;margin-bottom:
1.25em;padding:
1.25em;background:#f8f8f7;border-radius:
4px}
179 #content #toc
>:first-child{margin-top:
0}
180 #content #toc
>:last-child{margin-bottom:
0}
181 #footer{max-width:none;background:rgba(
0,
0,
0,
.8);padding:
1.25em}
182 #footer-text{color:hsla(
0,
0%,
100%,
.8);line-height:
1.44}
183 #content{margin-bottom:
.625em}
184 .sect1{padding-bottom:
.625em}
185 @media screen and (min-width:
768px){#content{margin-bottom:
1.25em}
186 .sect1{padding-bottom:
1.25em}}
187 .sect1:last-child{padding-bottom:
0}
188 .sect1+.sect1{border-top:
1px solid #e7e7e9}
189 #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}
190 #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}
191 #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}
192 #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}
193 #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}
194 details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:
1.25em}
195 details{margin-left:
1.25rem}
196 details
>summary{cursor:pointer;display:block;position:relative;line-height:
1.6;margin-bottom:
.625rem;outline:none;-webkit-tap-highlight-color:transparent}
197 details
>summary::-webkit-details-marker{display:none}
198 details
>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%)}
199 details[open]
>summary::before{border:solid transparent;border-top:solid;border-width:
.5em
.3em
0;transform:translateY(
15%)}
200 details
>summary::after{content:
"";width:
1.25rem;height:
1em;position:absolute;top:
.3em;left:-
1.25rem}
201 .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}
202 table.tableblock.fit-content
>caption.title{white-space:nowrap;width:
0}
203 .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)}
204 .admonitionblock
>table{border-collapse:separate;border:
0;background:none;width:
100%}
205 .admonitionblock
>table td.icon{text-align:center;width:
80px}
206 .admonitionblock
>table td.icon img{max-width:none}
207 .admonitionblock
>table td.icon .title{font-weight:bold;font-family:
"Open Sans",
"DejaVu Sans",sans-serif;text-transform:uppercase}
208 .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}
209 .admonitionblock
>table td.content
>:last-child
>:last-child{margin-bottom:
0}
210 .exampleblock
>.content{border:
1px solid #e6e6e6;margin-bottom:
1.25em;padding:
1.25em;background:#fff;border-radius:
4px}
211 .sidebarblock{border:
1px solid #dbdbd6;margin-bottom:
1.25em;padding:
1.25em;background:#f3f3f2;border-radius:
4px}
212 .sidebarblock
>.content
>.title{color:#
7a2518;margin-top:
0;text-align:center}
213 .exampleblock
>.content
>:first-child,.sidebarblock
>.content
>:first-child{margin-top:
0}
214 .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}
215 .literalblock pre,.listingblock
>.content
>pre{border-radius:
4px;overflow-x:auto;padding:
1em;font-size:
.8125em}
216 @media screen and (min-width:
768px){.literalblock pre,.listingblock
>.content
>pre{font-size:
.90625em}}
217 @media screen and (min-width:
1280px){.literalblock pre,.listingblock
>.content
>pre{font-size:
1em}}
218 .literalblock pre,.listingblock
>.content
>pre:not(.highlight),.listingblock
>.content
>pre[class=highlight],.listingblock
>.content
>pre[class^=
"highlight "]{background:#f7f7f8}
219 .literalblock.output pre{color:#f7f7f8;background:rgba(
0,
0,
0,
.9)}
220 .listingblock
>.content{position:relative}
221 .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}
222 .listingblock:hover code[data-lang]::before{display:block}
223 .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:
.5em;color:inherit;opacity:
.5}
224 .listingblock.terminal pre .command:not([data-prompt])::before{content:
"$"}
225 .listingblock pre.highlightjs{padding:
0}
226 .listingblock pre.highlightjs
>code{padding:
1em;border-radius:
4px}
227 .listingblock pre.prettyprint{border-width:
0}
228 .prettyprint{background:#f7f7f8}
229 pre.prettyprint .linenums{line-height:
1.45;margin-left:
2em}
230 pre.prettyprint li{background:none;list-style-type:inherit;padding-left:
0}
231 pre.prettyprint li code[data-lang]::before{opacity:
1}
232 pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
233 table.linenotable{border-collapse:separate;border:
0;margin-bottom:
0;background:none}
234 table.linenotable td[class]{color:inherit;vertical-align:top;padding:
0;line-height:inherit;white-space:normal}
235 table.linenotable td.code{padding-left:
.75em}
236 table.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}
237 pre.pygments span.linenos{display:inline-block;margin-right:
.75em}
238 .quoteblock{margin:
0 1em
1.25em
1.5em;display:table}
239 .quoteblock:not(.excerpt)
>.title{margin-left:-
1.5em;margin-bottom:
.75em}
240 .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}
241 .quoteblock blockquote{margin:
0;padding:
0;border:
0}
242 .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)}
243 .quoteblock blockquote
>.paragraph:last-child p{margin-bottom:
0}
244 .quoteblock .attribution{margin-top:
.75em;margin-right:
.5ex;text-align:right}
245 .verseblock{margin:
0 1em
1.25em}
246 .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}
247 .verseblock pre strong{font-weight:
400}
248 .verseblock .attribution{margin-top:
1.25rem;margin-left:
.5ex}
249 .quoteblock .attribution,.verseblock .attribution{font-size:
.9375em;line-height:
1.45;font-style:italic}
250 .quoteblock .attribution br,.verseblock .attribution br{display:none}
251 .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-
.025em;color:rgba(
0,
0,
0,
.6)}
252 .quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
253 .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}
254 .quoteblock.abstract{margin:
0 1em
1.25em;display:block}
255 .quoteblock.abstract
>.title{margin:
0 0 .375em;font-size:
1.15em;text-align:center}
256 .quoteblock.excerpt
>blockquote,.quoteblock .quoteblock{padding:
0 0 .25em
1em;border-left:
.25em solid #dddddf}
257 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:
0}
258 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:
1.0625rem}
259 .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:
.85rem;text-align:left;margin-right:
0}
260 p.tableblock:last-child{margin-bottom:
0}
261 td.tableblock
>.content{margin-bottom:
1.25em;word-wrap:anywhere}
262 td.tableblock
>.content
>:last-child{margin-bottom:-
1.25em}
263 table.tableblock,th.tableblock,td.tableblock{border:
0 solid #dedede}
264 table.grid-all
>*
>tr
>*{border-width:
1px}
265 table.grid-cols
>*
>tr
>*{border-width:
0 1px}
266 table.grid-rows
>*
>tr
>*{border-width:
1px
0}
267 table.frame-all{border-width:
1px}
268 table.frame-ends{border-width:
1px
0}
269 table.frame-sides{border-width:
0 1px}
270 table.frame-none
>colgroup+*
>:first-child
>*,table.frame-sides
>colgroup+*
>:first-child
>*{border-top-width:
0}
271 table.frame-none
>:last-child
>:last-child
>*,table.frame-sides
>:last-child
>:last-child
>*{border-bottom-width:
0}
272 table.frame-none
>*
>tr
>:first-child,table.frame-ends
>*
>tr
>:first-child{border-left-width:
0}
273 table.frame-none
>*
>tr
>:last-child,table.frame-ends
>*
>tr
>:last-child{border-right-width:
0}
274 table.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}
275 th.halign-left,td.halign-left{text-align:left}
276 th.halign-right,td.halign-right{text-align:right}
277 th.halign-center,td.halign-center{text-align:center}
278 th.valign-top,td.valign-top{vertical-align:top}
279 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
280 th.valign-middle,td.valign-middle{vertical-align:middle}
281 table thead th,table tfoot th{font-weight:bold}
282 tbody tr th{background:#f7f8f7}
283 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(
0,
0,
0,
.8);font-weight:bold}
284 p.tableblock
>code:only-child{background:none;padding:
0}
285 p.tableblock{font-size:
1em}
286 ol{margin-left:
1.75em}
287 ul li ol{margin-left:
1.5em}
288 dl dd{margin-left:
1.125em}
289 dl dd:last-child,dl dd:last-child
>:last-child{margin-bottom:
0}
290 li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:
.625em}
291 ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
292 ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:
.625em}
293 ul.unstyled,ol.unstyled{margin-left:
0}
294 li
>p:empty:only-child::before{content:
"";display:inline-block}
295 ul.checklist
>li
>p:first-child{margin-left:-
1em}
296 ul.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}
297 ul.checklist
>li
>p:first-child
>input[type=checkbox]:first-child{margin-right:
.25em}
298 ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:
0 0 .625em -
1.25em}
299 ul.inline
>li{margin-left:
1.25em}
300 .unstyled dl dt{font-weight:
400;font-style:normal}
301 ol.arabic{list-style-type:decimal}
302 ol.decimal{list-style-type:decimal-leading-zero}
303 ol.loweralpha{list-style-type:lower-alpha}
304 ol.upperalpha{list-style-type:upper-alpha}
305 ol.lowerroman{list-style-type:lower-roman}
306 ol.upperroman{list-style-type:upper-roman}
307 ol.lowergreek{list-style-type:lower-greek}
308 .hdlist
>table,.colist
>table{border:
0;background:none}
309 .hdlist
>table
>tbody
>tr,.colist
>table
>tbody
>tr{background:none}
310 td.hdlist1,td.hdlist2{vertical-align:top;padding:
0 .625em}
311 td.hdlist1{font-weight:bold;padding-bottom:
1.25em}
312 td.hdlist2{word-wrap:anywhere}
313 .literalblock+.colist,.listingblock+.colist{margin-top:-
.5em}
314 .colist td:not([class]):first-child{padding:
.4em
.75em
0;line-height:
1;vertical-align:top}
315 .colist td:not([class]):first-child img{max-width:none}
316 .colist td:not([class]):last-child{padding:
.25em
0}
317 .thumb,.th{line-height:
0;display:inline-block;border:
4px solid #fff;box-shadow:
0 0 0 1px #ddd}
318 .imageblock.left{margin:
.25em
.625em
1.25em
0}
319 .imageblock.right{margin:
.25em
0 1.25em
.625em}
320 .imageblock
>.title{margin-bottom:
0}
321 .imageblock.thumb,.imageblock.th{border-width:
6px}
322 .imageblock.thumb
>.title,.imageblock.th
>.title{padding:
0 .125em}
323 .image.left,.image.right{margin-top:
.25em;margin-bottom:
.25em;display:inline-block;line-height:
0}
324 .image.left{margin-right:
.625em}
325 .image.right{margin-left:
.625em}
326 a.image{text-decoration:none;display:inline-block}
327 a.image object{pointer-events:none}
328 sup.footnote,sup.footnoteref{font-size:
.875em;position:static;vertical-align:super}
329 sup.footnote a,sup.footnoteref a{text-decoration:none}
330 sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
331 #footnotes{padding-top:
.75em;padding-bottom:
.75em;margin-bottom:
.625em}
332 #footnotes hr{width:
20%;min-width:
6.25em;margin:-
.25em
0 .75em;border-width:
1px
0 0}
333 #footnotes .footnote{padding:
0 .375em
0 .225em;line-height:
1.3334;font-size:
.875em;margin-left:
1.2em;margin-bottom:
.2em}
334 #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-
1.05em}
335 #footnotes .footnote:last-of-type{margin-bottom:
0}
336 #content #footnotes{margin-top:-
.625em;margin-bottom:
0;padding:
.75em
0}
337 div.unbreakable{page-break-inside:avoid}
338 .big{font-size:larger}
339 .small{font-size:smaller}
340 .underline{text-decoration:underline}
341 .overline{text-decoration:overline}
342 .line-through{text-decoration:line-through}
344 .aqua-background{background:#
00fafa}
346 .black-background{background:#
000}
348 .blue-background{background:#
0000fa}
349 .fuchsia{color:#bf00bf}
350 .fuchsia-background{background:#fa00fa}
352 .gray-background{background:#
7d7d7d}
353 .green{color:#
006000}
354 .green-background{background:#
007d00}
356 .lime-background{background:#
00fa00}
357 .maroon{color:#
600000}
358 .maroon-background{background:#
7d0000}
360 .navy-background{background:#
00007d}
361 .olive{color:#
606000}
362 .olive-background{background:#
7d7d00}
363 .purple{color:#
600060}
364 .purple-background{background:#
7d007d}
366 .red-background{background:#fa0000}
367 .silver{color:#
909090}
368 .silver-background{background:#bcbcbc}
370 .teal-background{background:#
007d7d}
371 .white{color:#bfbfbf}
372 .white-background{background:#fafafa}
373 .yellow{color:#bfbf00}
374 .yellow-background{background:#fafa00}
375 span.icon
>.fa{cursor:default}
376 a span.icon
>.fa{cursor:inherit}
377 .admonitionblock td.icon [class^=
"fa icon-"]{font-size:
2.5em;text-shadow:
1px
1px
2px rgba(
0,
0,
0,
.5);cursor:default}
378 .admonitionblock td.icon .icon-note::before{content:
"\f05a";color:#
19407c}
379 .admonitionblock td.icon .icon-tip::before{content:
"\f0eb";text-shadow:
1px
1px
2px rgba(
155,
155,
0,
.8);color:#
111}
380 .admonitionblock td.icon .icon-warning::before{content:
"\f071";color:#bf6900}
381 .admonitionblock td.icon .icon-caution::before{content:
"\f06d";color:#bf3400}
382 .admonitionblock td.icon .icon-important::before{content:
"\f06a";color:#bf0000}
383 .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}
384 .conum[data-value] *{color:#fff!important}
385 .conum[data-value]+b{display:none}
386 .conum[data-value]::after{content:attr(data-value)}
387 pre .conum[data-value]{position:relative;top:-
.125em}
388 b.conum *{color:inherit!important}
389 .conum:not([data-value]):empty{display:none}
390 dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
391 h1,h2,p,td.content,span.alt,summary{letter-spacing:-
.01em}
392 p strong,td.content strong,div.footnote strong{letter-spacing:-
.005em}
393 p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:
1.0625rem}
394 p{margin-bottom:
1.25rem}
395 .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:
1em}
396 .exampleblock
>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:
0 1px
4px #e0e0dc}
397 .print-only{display:none!important}
398 @page{margin:
1.25cm
.75cm}
399 @media print{*{box-shadow:none!important;text-shadow:none!important}
401 a{color:inherit!important;text-decoration:underline!important}
402 a.bare,a[href^=
"#"],a[href^=
"mailto:"]{text-decoration:none!important}
403 a[href^=
"http:"]:not(.bare)::after,a[href^=
"https:"]:not(.bare)::after{content:
"(" attr(href)
")";display:inline-block;font-size:
.875em;padding-left:
.25em}
404 abbr[title]{border-bottom:
1px dotted}
405 abbr[title]::after{content:
" (" attr(title)
")"}
406 pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
407 thead{display:table-header-group}
409 p,blockquote,dt,td.content{font-size:
1em;orphans:
3;widows:
3}
410 h2,h3,#toctitle,.sidebarblock
>.content
>.title{page-break-after:avoid}
411 #header,#content,#footnotes,#footer{max-width:none}
412 #toc,.sidebarblock,.exampleblock
>.content{background:none!important}
413 #toc{border-bottom:
1px solid #dddddf!important;padding-bottom:
0!important}
414 body.book #header{text-align:center}
415 body.book #header
>h1:first-child{border:
0!important;margin:
2.5em
0 1em}
416 body.book #header .details{border:
0!important;display:block;padding:
0!important}
417 body.book #header .details span:first-child{margin-left:
0!important}
418 body.book #header .details br{display:block}
419 body.book #header .details br+span::before{content:none!important}
420 body.book #toc{border:
0!important;text-align:left!important;padding:
0!important;margin:
0!important}
421 body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1
>h2{page-break-before:always}
422 .listingblock code[data-lang]::before{display:block}
423 #footer{padding:
0 .9375em}
424 .hide-on-print{display:none!important}
425 .print-only{display:block!important}
426 .hide-for-print{display:none!important}
427 .show-for-print{display:inherit!important}}
428 @media amzn-kf8,print{#header
>h1:first-child{margin-top:
1.25rem}
429 .sect1{padding:
0!important}
430 .sect1+.sect1{border:
0}
431 #footer{background:none}
432 #footer-text{color:rgba(
0,
0,
0,
.6);font-size:
.9em}}
433 @media amzn-kf8{#header,#content,#footnotes,#footer{padding:
0}}
441 <body class=
"manpage">
443 <h1>git-reset(
1) Manual Page
</h1>
444 <h2 id=
"_name">NAME
</h2>
445 <div class=
"sectionbody">
446 <p>git-reset - Reset current HEAD to the specified state
</p>
451 <h2 id=
"_synopsis">SYNOPSIS
</h2>
452 <div class=
"sectionbody">
453 <div class=
"verseblock">
454 <pre class=
"content"><em>git reset
</em> [-q] [
<tree-ish
>] [--]
<pathspec
>…​
455 <em>git reset
</em> [-q] [--pathspec-from-file=
<file
> [--pathspec-file-nul]] [
<tree-ish
>]
456 <em>git reset
</em> (--patch | -p) [
<tree-ish
>] [--] [
<pathspec
>…​]
457 <em>git reset
</em> [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [
<commit
>]
</pre>
462 <h2 id=
"_description">DESCRIPTION
</h2>
463 <div class=
"sectionbody">
464 <div class=
"paragraph">
465 <p>In the first three forms, copy entries from
<em><tree-ish
></em> to the index.
466 In the last form, set the current branch head (
<code>HEAD
</code>) to
<em><commit
></em>,
467 optionally modifying index and working tree to match.
468 The
<em><tree-ish
></em>/
<em><commit
></em> defaults to
<code>HEAD
</code> in all forms.
</p>
472 <dt class=
"hdlist1"><em>git reset
</em> [-q] [
<tree-ish
>] [--]
<pathspec
>…​</dt>
473 <dt class=
"hdlist1"><em>git reset
</em> [-q] [--pathspec-from-file=
<file
> [--pathspec-file-nul]] [
<tree-ish
>]
</dt>
475 <p>These forms reset the index entries for all paths that match the
476 <em><pathspec
></em> to their state at
<em><tree-ish
></em>. (It does not affect
477 the working tree or the current branch.)
</p>
478 <div class=
"paragraph">
479 <p>This means that
<code>git
</code> <code>reset
</code> <em><pathspec
></em> is the opposite of
<code>git
</code> <code>add
</code>
480 <em><pathspec
></em>. This command is equivalent to
481 <code>git
</code> <code>restore
</code> [
<code>--source=
</code><em><tree-ish
></em>]
<code>--staged
</code> <em><pathspec
></em>....
</p>
483 <div class=
"paragraph">
484 <p>After running
<code>git
</code> <code>reset
</code> <em><pathspec
></em> to update the index entry, you can
485 use
<a href=
"git-restore.html">git-restore(
1)
</a> to check the contents out of the index to
486 the working tree. Alternatively, using
<a href=
"git-restore.html">git-restore(
1)
</a>
487 and specifying a commit with
<code>--source
</code>, you
488 can copy the contents of a path out of a commit to the index and to the
489 working tree in one go.
</p>
492 <dt class=
"hdlist1"><em>git reset
</em> (--patch | -p) [
<tree-ish
>] [--] [
<pathspec
>…​]
</dt>
494 <p>Interactively select hunks in the difference between the index
495 and
<em><tree-ish
></em> (defaults to
<code>HEAD
</code>). The chosen hunks are applied
496 in reverse to the index.
</p>
497 <div class=
"paragraph">
498 <p>This means that
<code>git
</code> <code>reset
</code> <code>-p
</code> is the opposite of
<code>git
</code> <code>add
</code> <code>-p
</code>, i.e.
499 you can use it to selectively reset hunks. See the
“Interactive Mode
”
500 section of
<a href=
"git-add.html">git-add(
1)
</a> to learn how to operate the
<code>--patch
</code> mode.
</p>
503 <dt class=
"hdlist1"><em>git reset
</em> [
<mode
>] [
<commit
>]
</dt>
505 <p>This form resets the current branch head to
<em><commit
></em> and
506 possibly updates the index (resetting it to the tree of
<em><commit
></em>) and
507 the working tree depending on
<em><mode
></em>. Before the operation,
<code>ORIG_HEAD
</code>
508 is set to the tip of the current branch. If
<em><mode
></em> is omitted,
509 defaults to
<code>--mixed
</code>. The
<em><mode
></em> must be one of the following:
</p>
510 <div class=
"openblock">
511 <div class=
"content">
514 <dt class=
"hdlist1">--soft
</dt>
516 <p>Does not touch the index file or the working tree at all (but
517 resets the head to
<em><commit
></em>, just like all modes do). This leaves
518 all your changed files
"Changes to be committed", as
<code>git
</code> <code>status
</code>
521 <dt class=
"hdlist1">--mixed
</dt>
523 <p>Resets the index but not the working tree (i.e., the changed files
524 are preserved but not marked for commit) and reports what has not
525 been updated. This is the default action.
</p>
526 <div class=
"paragraph">
527 <p>If
<code>-N
</code> is specified, removed paths are marked as intent-to-add (see
528 <a href=
"git-add.html">git-add(
1)
</a>).
</p>
531 <dt class=
"hdlist1">--hard
</dt>
533 <p>Resets the index and working tree. Any changes to tracked files in the
534 working tree since
<em><commit
></em> are discarded. Any untracked files or
535 directories in the way of writing any tracked files are simply deleted.
</p>
537 <dt class=
"hdlist1">--merge
</dt>
539 <p>Resets the index and updates the files in the working tree that are
540 different between
<em><commit
></em> and
<code>HEAD
</code>, but keeps those which are
541 different between the index and working tree (i.e. which have changes
542 which have not been added).
543 If a file that is different between
<em><commit
></em> and the index has
544 unstaged changes, reset is aborted.
</p>
545 <div class=
"paragraph">
546 <p>In other words,
<code>--merge
</code> does something like a
<code>git
</code> <code>read-tree
</code> <code>-u
</code> <code>-m
</code> <em><commit
></em>,
547 but carries forward unmerged index entries.
</p>
550 <dt class=
"hdlist1">--keep
</dt>
552 <p>Resets index entries and updates files in the working tree that are
553 different between
<em><commit
></em> and
<code>HEAD
</code>.
554 If a file that is different between
<em><commit
></em> and
<code>HEAD
</code> has local
555 changes, reset is aborted.
</p>
557 <dt class=
"hdlist1">--[no-]recurse-submodules
</dt>
559 <p>When the working tree is updated, using --recurse-submodules will
560 also recursively reset the working tree of all active submodules
561 according to the commit recorded in the superproject, also setting
562 the submodules' HEAD to be detached at that commit.
</p>
571 <div class=
"paragraph">
572 <p>See
"Reset, restore and revert" in
<a href=
"git.html">git(
1)
</a> for the differences
573 between the three commands.
</p>
578 <h2 id=
"_options">OPTIONS
</h2>
579 <div class=
"sectionbody">
582 <dt class=
"hdlist1">-q
</dt>
583 <dt class=
"hdlist1">--quiet
</dt>
585 <p>Be quiet, only report errors.
</p>
587 <dt class=
"hdlist1">--refresh
</dt>
588 <dt class=
"hdlist1">--no-refresh
</dt>
590 <p>Refresh the index after a mixed reset. Enabled by default.
</p>
592 <dt class=
"hdlist1">--pathspec-from-file=
<file
></dt>
594 <p>Pathspec is passed in
<em><file
></em> instead of commandline args. If
595 <em><file
></em> is exactly
<code>-
</code> then standard input is used. Pathspec
596 elements are separated by LF or CR/LF. Pathspec elements can be
597 quoted as explained for the configuration variable
<code>core.quotePath
</code>
598 (see
<a href=
"git-config.html">git-config(
1)
</a>). See also
<code>--pathspec-file-nul
</code> and
599 global
<code>--literal-pathspecs
</code>.
</p>
601 <dt class=
"hdlist1">--pathspec-file-nul
</dt>
603 <p>Only meaningful with
<code>--pathspec-from-file
</code>. Pathspec elements are
604 separated with NUL character and all other characters are taken
605 literally (including newlines and quotes).
</p>
607 <dt class=
"hdlist1">--
</dt>
609 <p>Do not interpret any more arguments as options.
</p>
611 <dt class=
"hdlist1"><pathspec
>…​</dt>
613 <p>Limits the paths affected by the operation.
</p>
614 <div class=
"paragraph">
615 <p>For more details, see the
<em>pathspec
</em> entry in
<a href=
"gitglossary.html">gitglossary(
7)
</a>.
</p>
623 <h2 id=
"_examples">EXAMPLES
</h2>
624 <div class=
"sectionbody">
627 <dt class=
"hdlist1">Undo add
</dt>
629 <div class=
"listingblock">
630 <div class=
"content">
631 <pre>$ edit
<b class=
"conum">(
1)
</b>
632 $ git add frotz.c filfre.c
633 $ mailx
<b class=
"conum">(
2)
</b>
634 $ git reset
<b class=
"conum">(
3)
</b>
635 $ git pull git://info.example.com/ nitfol
<b class=
"conum">(
4)
</b></pre>
638 <div class=
"colist arabic">
641 <p>You are happily working on something, and find the changes
642 in these files are in good order. You do not want to see them
643 when you run
<code>git
</code> <code>diff
</code>, because you plan to work on other files
644 and changes with these files are distracting.
</p>
647 <p>Somebody asks you to pull, and the changes sound worthy of merging.
</p>
650 <p>However, you already dirtied the index (i.e. your index does
651 not match the
<code>HEAD
</code> commit). But you know the pull you are going
652 to make does not affect
<code>frotz.c
</code> or
<code>filfre.c
</code>, so you revert the
653 index changes for these two files. Your changes in working tree
657 <p>Then you can pull and merge, leaving
<code>frotz.c
</code> and
<code>filfre.c
</code>
658 changes still in the working tree.
</p>
663 <dt class=
"hdlist1">Undo a commit and redo
</dt>
665 <div class=
"listingblock">
666 <div class=
"content">
667 <pre>$ git commit ...
668 $ git reset --soft HEAD^
<b class=
"conum">(
1)
</b>
669 $ edit
<b class=
"conum">(
2)
</b>
670 $ git commit -a -c ORIG_HEAD
<b class=
"conum">(
3)
</b></pre>
673 <div class=
"colist arabic">
676 <p>This is most often done when you remembered what you
677 just committed is incomplete, or you misspelled your commit
678 message, or both. Leaves working tree as it was before
"reset".
</p>
681 <p>Make corrections to working tree files.
</p>
684 <p>"reset" copies the old head to .
<code>git/ORIG_HEAD
</code>; redo the
685 commit by starting with its log message. If you do not need to
686 edit the message further, you can give
<code>-C
</code> option instead.
</p>
690 <div class=
"paragraph">
691 <p>See also the
<code>--amend
</code> option to
<a href=
"git-commit.html">git-commit(
1)
</a>.
</p>
694 <dt class=
"hdlist1">Undo a commit, making it a topic branch
</dt>
696 <div class=
"listingblock">
697 <div class=
"content">
698 <pre>$ git branch topic/wip
<b class=
"conum">(
1)
</b>
699 $ git reset --hard HEAD~
3 <b class=
"conum">(
2)
</b>
700 $ git switch topic/wip
<b class=
"conum">(
3)
</b></pre>
703 <div class=
"colist arabic">
706 <p>You have made some commits, but realize they were premature
707 to be in the
<code>master
</code> branch. You want to continue polishing
708 them in a topic branch, so create
<code>topic/wip
</code> branch off of the
709 current
<code>HEAD
</code>.
</p>
712 <p>Rewind the master branch to get rid of those three commits.
</p>
715 <p>Switch to
<code>topic/wip
</code> branch and keep working.
</p>
720 <dt class=
"hdlist1">Undo commits permanently
</dt>
722 <div class=
"listingblock">
723 <div class=
"content">
724 <pre>$ git commit ...
725 $ git reset --hard HEAD~
3 <b class=
"conum">(
1)
</b></pre>
728 <div class=
"colist arabic">
731 <p>The last three commits (
<code>HEAD
</code>,
<code>HEAD^
</code>, and
<code>HEAD~
2</code>) were bad
732 and you do not want to ever see them again. Do
<strong>not
</strong> do this if
733 you have already given these commits to somebody else. (See the
734 "RECOVERING FROM UPSTREAM REBASE" section in
<a href=
"git-rebase.html">git-rebase(
1)
</a>
735 for the implications of doing so.)
</p>
740 <dt class=
"hdlist1">Undo a merge or pull
</dt>
742 <div class=
"listingblock">
743 <div class=
"content">
744 <pre>$ git pull
<b class=
"conum">(
1)
</b>
746 CONFLICT (content): Merge conflict in nitfol
747 Automatic merge failed; fix conflicts and then commit the result.
748 $ git reset --hard
<b class=
"conum">(
2)
</b>
749 $ git pull . topic/branch
<b class=
"conum">(
3)
</b>
750 Updating from
41223... to
13134...
752 $ git reset --hard ORIG_HEAD
<b class=
"conum">(
4)
</b></pre>
755 <div class=
"colist arabic">
758 <p>Try to update from the upstream resulted in a lot of
759 conflicts; you were not ready to spend a lot of time merging
760 right now, so you decide to do that later.
</p>
763 <p>"pull" has not made merge commit, so
<code>git
</code> <code>reset
</code> <code>--hard
</code>
764 which is a synonym for
<code>git
</code> <code>reset
</code> <code>--hard
</code> <code>HEAD
</code> clears the mess
765 from the index file and the working tree.
</p>
768 <p>Merge a topic branch into the current branch, which resulted
769 in a fast-forward.
</p>
772 <p>But you decided that the topic branch is not ready for public
773 consumption yet.
"pull" or
"merge" always leaves the original
774 tip of the current branch in
<code>ORIG_HEAD
</code>, so resetting hard to it
775 brings your index file and the working tree back to that state,
776 and resets the tip of the branch to that commit.
</p>
781 <dt class=
"hdlist1">Undo a merge or pull inside a dirty working tree
</dt>
783 <div class=
"listingblock">
784 <div class=
"content">
785 <pre>$ git pull
<b class=
"conum">(
1)
</b>
787 Merge made by recursive.
788 nitfol |
20 +++++----
790 $ git reset --merge ORIG_HEAD
<b class=
"conum">(
2)
</b></pre>
793 <div class=
"colist arabic">
796 <p>Even if you may have local modifications in your
797 working tree, you can safely say
<code>git
</code> <code>pull
</code> when you know
798 that the change in the other branch does not overlap with
802 <p>After inspecting the result of the merge, you may find
803 that the change in the other branch is unsatisfactory. Running
804 <code>git
</code> <code>reset
</code> <code>--hard
</code> <code>ORIG_HEAD
</code> will let you go back to where you
805 were, but it will discard your local changes, which you do not
806 want.
<code>git
</code> <code>reset
</code> <code>--merge
</code> keeps your local changes.
</p>
811 <dt class=
"hdlist1">Interrupted workflow
</dt>
813 <div class=
"paragraph">
814 <p>Suppose you are interrupted by an urgent fix request while you
815 are in the middle of a large change. The files in your
816 working tree are not in any shape to be committed yet, but you
817 need to get to the other branch for a quick bugfix.
</p>
819 <div class=
"listingblock">
820 <div class=
"content">
821 <pre>$ git switch feature ;# you were working in
"feature" branch and
822 $ work work work ;# got interrupted
823 $ git commit -a -m
"snapshot WIP" <b class=
"conum">(
1)
</b>
826 $ git commit ;# commit with real log
828 $ git reset --soft HEAD^ ;# go back to WIP state
<b class=
"conum">(
2)
</b>
829 $ git reset
<b class=
"conum">(
3)
</b></pre>
832 <div class=
"colist arabic">
835 <p>This commit will get blown away so a throw-away log message is OK.
</p>
838 <p>This removes the
<em>WIP
</em> commit from the commit history, and sets
839 your working tree to the state just before you made that snapshot.
</p>
842 <p>At this point the index file still has all the WIP changes you
843 committed as
<em>snapshot WIP
</em>. This updates the index to show your
844 WIP files as uncommitted.
</p>
848 <div class=
"paragraph">
849 <p>See also
<a href=
"git-stash.html">git-stash(
1)
</a>.
</p>
852 <dt class=
"hdlist1">Reset a single file in the index
</dt>
854 <div class=
"paragraph">
855 <p>Suppose you have added a file to your index, but later decide you do not
856 want to add it to your commit. You can remove the file from the index
857 while keeping your changes with git reset.
</p>
859 <div class=
"listingblock">
860 <div class=
"content">
861 <pre>$ git reset -- frotz.c
<b class=
"conum">(
1)
</b>
862 $ git commit -m
"Commit files in index" <b class=
"conum">(
2)
</b>
863 $ git add frotz.c
<b class=
"conum">(
3)
</b></pre>
866 <div class=
"colist arabic">
869 <p>This removes the file from the index while keeping it in the working
873 <p>This commits all other changes in the index.
</p>
876 <p>Adds the file to the index again.
</p>
881 <dt class=
"hdlist1">Keep changes in working tree while discarding some previous commits
</dt>
883 <div class=
"paragraph">
884 <p>Suppose you are working on something and you commit it, and then you
885 continue working a bit more, but now you think that what you have in
886 your working tree should be in another branch that has nothing to do
887 with what you committed previously. You can start a new branch and
888 reset it while keeping the changes in your working tree.
</p>
890 <div class=
"listingblock">
891 <div class=
"content">
893 $ git switch -c branch1
895 $ git commit ...
<b class=
"conum">(
1)
</b>
897 $ git switch -c branch2
<b class=
"conum">(
2)
</b>
898 $ git reset --keep start
<b class=
"conum">(
3)
</b></pre>
901 <div class=
"colist arabic">
904 <p>This commits your first edits in
<code>branch1
</code>.
</p>
907 <p>In the ideal world, you could have realized that the earlier
908 commit did not belong to the new topic when you created and switched
909 to
<code>branch2
</code> (i.e.
<code>git
</code> <code>switch
</code> <code>-c
</code> <code>branch2
</code> <code>start
</code>), but nobody is
913 <p>But you can use
<code>reset
</code> <code>--keep
</code> to remove the unwanted commit after
914 you switched to
<code>branch2
</code>.
</p>
919 <dt class=
"hdlist1">Split a commit apart into a sequence of commits
</dt>
921 <div class=
"paragraph">
922 <p>Suppose that you have created lots of logically separate changes and committed
923 them together. Then, later you decide that it might be better to have each
924 logical chunk associated with its own commit. You can use git reset to rewind
925 history without changing the contents of your local files, and then successively
926 use
<code>git
</code> <code>add
</code> <code>-p
</code> to interactively select which hunks to include into each commit,
927 using
<code>git
</code> <code>commit
</code> <code>-c
</code> to pre-populate the commit message.
</p>
929 <div class=
"listingblock">
930 <div class=
"content">
931 <pre>$ git reset -N HEAD^
<b class=
"conum">(
1)
</b>
932 $ git add -p
<b class=
"conum">(
2)
</b>
933 $ git diff --cached
<b class=
"conum">(
3)
</b>
934 $ git commit -c HEAD@{
1}
<b class=
"conum">(
4)
</b>
935 ...
<b class=
"conum">(
5)
</b>
936 $ git add ...
<b class=
"conum">(
6)
</b>
937 $ git diff --cached
<b class=
"conum">(
7)
</b>
938 $ git commit ...
<b class=
"conum">(
8)
</b></pre>
941 <div class=
"colist arabic">
944 <p>First, reset the history back one commit so that we remove the original
945 commit, but leave the working tree with all the changes. The -N ensures
946 that any new files added with
<code>HEAD
</code> are still marked so that
<code>git
</code> <code>add
</code> <code>-p
</code>
950 <p>Next, we interactively select diff hunks to add using the
<code>git
</code> <code>add
</code> <code>-p
</code>
951 facility. This will ask you about each diff hunk in sequence and you can
952 use simple commands such as
"yes, include this",
"No don’t include this"
953 or even the very powerful
"edit" facility.
</p>
956 <p>Once satisfied with the hunks you want to include, you should verify what
957 has been prepared for the first commit by using
<code>git
</code> <code>diff
</code> <code>--cached
</code>. This
958 shows all the changes that have been moved into the index and are about
962 <p>Next, commit the changes stored in the index. The
<code>-c
</code> option specifies to
963 pre-populate the commit message from the original message that you started
964 with in the first commit. This is helpful to avoid retyping it. The
965 <code>HEAD@
</code>{
1} is a special notation for the commit that
<code>HEAD
</code> used to be at
966 prior to the original reset commit (
1 change ago).
967 See
<a href=
"git-reflog.html">git-reflog(
1)
</a> for more details. You may also use any other
968 valid commit reference.
</p>
971 <p>You can repeat steps
2-
4 multiple times to break the original code into
972 any number of commits.
</p>
975 <p>Now you
’ve split out many of the changes into their own commits, and might
976 no longer use the patch mode of
<code>git
</code> <code>add
</code>, in order to select all remaining
977 uncommitted changes.
</p>
980 <p>Once again, check to verify that you
’ve included what you want to. You may
981 also wish to verify that git diff doesn
’t show any remaining changes to be
985 <p>And finally create the final commit.
</p>
995 <h2 id=
"_discussion">DISCUSSION
</h2>
996 <div class=
"sectionbody">
997 <div class=
"paragraph">
998 <p>The tables below show what happens when running:
</p>
1000 <div class=
"listingblock">
1001 <div class=
"content">
1002 <pre>git reset --option target
</pre>
1005 <div class=
"paragraph">
1006 <p>to reset the
<code>HEAD
</code> to another commit (
<code>target
</code>) with the different
1007 reset options depending on the state of the files.
</p>
1009 <div class=
"paragraph">
1010 <p>In these tables,
<code>A
</code>,
<code>B
</code>,
<code>C
</code> and
<code>D
</code> are some different states of a
1011 file. For example, the first line of the first table means that if a
1012 file is in state
<code>A
</code> in the working tree, in state
<code>B
</code> in the index, in
1013 state
<code>C
</code> in
<code>HEAD
</code> and in state
<code>D
</code> in the target, then
<code>git
</code> <code>reset
</code> <code>--soft
</code>
1014 <code>target
</code> will leave the file in the working tree in state
<code>A
</code> and in the
1015 index in state
<code>B
</code>. It resets (i.e. moves) the
<code>HEAD
</code> (i.e. the tip of
1016 the current branch, if you are on one) to
<code>target
</code> (which has the file
1017 in state
<code>D
</code>).
</p>
1019 <div class=
"literalblock">
1020 <div class=
"content">
1021 <pre>working index HEAD target working index HEAD
1022 ----------------------------------------------------
1023 A B C D --soft A B D
1026 --merge (disallowed)
1027 --keep (disallowed)
</pre>
1030 <div class=
"literalblock">
1031 <div class=
"content">
1032 <pre>working index HEAD target working index HEAD
1033 ----------------------------------------------------
1034 A B C C --soft A B C
1037 --merge (disallowed)
1041 <div class=
"literalblock">
1042 <div class=
"content">
1043 <pre>working index HEAD target working index HEAD
1044 ----------------------------------------------------
1045 B B C D --soft B B D
1049 --keep (disallowed)
</pre>
1052 <div class=
"literalblock">
1053 <div class=
"content">
1054 <pre>working index HEAD target working index HEAD
1055 ----------------------------------------------------
1056 B B C C --soft B B C
1063 <div class=
"literalblock">
1064 <div class=
"content">
1065 <pre>working index HEAD target working index HEAD
1066 ----------------------------------------------------
1067 B C C D --soft B C D
1070 --merge (disallowed)
1071 --keep (disallowed)
</pre>
1074 <div class=
"literalblock">
1075 <div class=
"content">
1076 <pre>working index HEAD target working index HEAD
1077 ----------------------------------------------------
1078 B C C C --soft B C C
1085 <div class=
"paragraph">
1086 <p><code>reset
</code> <code>--merge
</code> is meant to be used when resetting out of a conflicted
1087 merge. Any mergy operation guarantees that the working tree file that is
1088 involved in the merge does not have a local change with respect to the index
1089 before it starts, and that it writes the result out to the working tree. So if
1090 we see some difference between the index and the target and also
1091 between the index and the working tree, then it means that we are not
1092 resetting out from a state that a mergy operation left after failing
1093 with a conflict. That is why we disallow
<code>--merge
</code> option in this case.
</p>
1095 <div class=
"paragraph">
1096 <p><code>reset
</code> <code>--keep
</code> is meant to be used when removing some of the last
1097 commits in the current branch while keeping changes in the working
1098 tree. If there could be conflicts between the changes in the commit we
1099 want to remove and the changes in the working tree we want to keep,
1100 the reset is disallowed. That
’s why it is disallowed if there are both
1101 changes between the working tree and
<code>HEAD
</code>, and between
<code>HEAD
</code> and the
1102 target. To be safe, it is also disallowed when there are unmerged
1105 <div class=
"paragraph">
1106 <p>The following tables show what happens when there are unmerged
1109 <div class=
"literalblock">
1110 <div class=
"content">
1111 <pre>working index HEAD target working index HEAD
1112 ----------------------------------------------------
1113 X U A B --soft (disallowed)
1117 --keep (disallowed)
</pre>
1120 <div class=
"literalblock">
1121 <div class=
"content">
1122 <pre>working index HEAD target working index HEAD
1123 ----------------------------------------------------
1124 X U A A --soft (disallowed)
1128 --keep (disallowed)
</pre>
1131 <div class=
"paragraph">
1132 <p><code>X
</code> means any state and
<code>U
</code> means an unmerged index.
</p>
1137 <h2 id=
"_git">GIT
</h2>
1138 <div class=
"sectionbody">
1139 <div class=
"paragraph">
1140 <p>Part of the
<a href=
"git.html">git(
1)
</a> suite
</p>
1146 <div id=
"footer-text">
1147 Last updated
2023-
01-
21 17:
52:
14 -
0800