Autogenerated HTML docs for v1.3.1-g7464
[git.git] / git-reset.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
2     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
4 <head>\r
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
6 <meta name="generator" content="AsciiDoc 7.0.2" />\r
7 <style type="text/css">\r
8 /* Debug borders */\r
9 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
10 /*\r
11   border: 1px solid red;\r
12 */\r
13 }\r
14 \r
15 body {\r
16   margin: 1em 5% 1em 5%;\r
17 }\r
18 \r
19 a { color: blue; }\r
20 a:visited { color: fuchsia; }\r
21 \r
22 em {\r
23   font-style: italic;\r
24 }\r
25 \r
26 strong {\r
27   font-weight: bold;\r
28 }\r
29 \r
30 tt {\r
31   color: navy;\r
32 }\r
33 \r
34 h1, h2, h3, h4, h5, h6 {\r
35   color: #527bbd;\r
36   font-family: sans-serif;\r
37   margin-top: 1.2em;\r
38   margin-bottom: 0.5em;\r
39   line-height: 1.3;\r
40 }\r
41 \r
42 h1 {\r
43   border-bottom: 2px solid silver;\r
44 }\r
45 h2 {\r
46   border-bottom: 2px solid silver;\r
47   padding-top: 0.5em;\r
48 }\r
49 \r
50 div.sectionbody {\r
51   font-family: serif;\r
52   margin-left: 0;\r
53 }\r
54 \r
55 hr {\r
56   border: 1px solid silver;\r
57 }\r
58 \r
59 p {\r
60   margin-top: 0.5em;\r
61   margin-bottom: 0.5em;\r
62 }\r
63 \r
64 pre {\r
65   padding: 0;\r
66   margin: 0;\r
67 }\r
68 \r
69 span#author {\r
70   color: #527bbd;\r
71   font-family: sans-serif;\r
72   font-weight: bold;\r
73   font-size: 1.2em;\r
74 }\r
75 span#email {\r
76 }\r
77 span#revision {\r
78   font-family: sans-serif;\r
79 }\r
80 \r
81 div#footer {\r
82   font-family: sans-serif;\r
83   font-size: small;\r
84   border-top: 2px solid silver;\r
85   padding-top: 0.5em;\r
86   margin-top: 4.0em;\r
87 }\r
88 div#footer-text {\r
89   float: left;\r
90   padding-bottom: 0.5em;\r
91 }\r
92 div#footer-badges {\r
93   float: right;\r
94   padding-bottom: 0.5em;\r
95 }\r
96 \r
97 div#preamble,\r
98 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
99 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
100 div.admonitionblock {\r
101   margin-right: 10%;\r
102   margin-top: 1.5em;\r
103   margin-bottom: 1.5em;\r
104 }\r
105 div.admonitionblock {\r
106   margin-top: 2.5em;\r
107   margin-bottom: 2.5em;\r
108 }\r
109 \r
110 div.content { /* Block element content. */\r
111   padding: 0;\r
112 }\r
113 \r
114 /* Block element titles. */\r
115 div.title, caption.title {\r
116   font-family: sans-serif;\r
117   font-weight: bold;\r
118   text-align: left;\r
119   margin-top: 1.0em;\r
120   margin-bottom: 0.5em;\r
121 }\r
122 div.title + * {\r
123   margin-top: 0;\r
124 }\r
125 \r
126 td div.title:first-child {\r
127   margin-top: 0.0em;\r
128 }\r
129 div.content div.title:first-child {\r
130   margin-top: 0.0em;\r
131 }\r
132 div.content + div.title {\r
133   margin-top: 0.0em;\r
134 }\r
135 \r
136 div.sidebarblock > div.content {\r
137   background: #ffffee;\r
138   border: 1px solid silver;\r
139   padding: 0.5em;\r
140 }\r
141 \r
142 div.listingblock > div.content {\r
143   border: 1px solid silver;\r
144   background: #f4f4f4;\r
145   padding: 0.5em;\r
146 }\r
147 \r
148 div.quoteblock > div.content {\r
149   padding-left: 2.0em;\r
150 }\r
151 div.quoteblock .attribution {\r
152   text-align: right;\r
153 }\r
154 \r
155 div.admonitionblock .icon {\r
156   vertical-align: top;\r
157   font-size: 1.1em;\r
158   font-weight: bold;\r
159   text-decoration: underline;\r
160   color: #527bbd;\r
161   padding-right: 0.5em;\r
162 }\r
163 div.admonitionblock td.content {\r
164   padding-left: 0.5em;\r
165   border-left: 2px solid silver;\r
166 }\r
167 \r
168 div.exampleblock > div.content {\r
169   border-left: 2px solid silver;\r
170   padding: 0.5em;\r
171 }\r
172 \r
173 div.verseblock div.content {\r
174   white-space: pre;\r
175 }\r
176 \r
177 div.imageblock div.content { padding-left: 0; }\r
178 div.imageblock img { border: 1px solid silver; }\r
179 span.image img { border-style: none; }\r
180 \r
181 dl {\r
182   margin-top: 0.8em;\r
183   margin-bottom: 0.8em;\r
184 }\r
185 dt {\r
186   margin-top: 0.5em;\r
187   margin-bottom: 0;\r
188   font-style: italic;\r
189 }\r
190 dd > *:first-child {\r
191   margin-top: 0;\r
192 }\r
193 \r
194 ul, ol {\r
195     list-style-position: outside;\r
196 }\r
197 ol.olist2 {\r
198   list-style-type: lower-alpha;\r
199 }\r
200 \r
201 div.tableblock > table {\r
202   border-color: #527bbd;\r
203   border-width: 3px;\r
204 }\r
205 thead {\r
206   font-family: sans-serif;\r
207   font-weight: bold;\r
208 }\r
209 tfoot {\r
210   font-weight: bold;\r
211 }\r
212 \r
213 div.hlist {\r
214   margin-top: 0.8em;\r
215   margin-bottom: 0.8em;\r
216 }\r
217 td.hlist1 {\r
218   vertical-align: top;\r
219   font-style: italic;\r
220   padding-right: 0.8em;\r
221 }\r
222 td.hlist2 {\r
223   vertical-align: top;\r
224 }\r
225 \r
226 @media print {\r
227   div#footer-badges { display: none; }\r
228 }\r
229 include::./stylesheets/xhtml11-manpage.css[]\r
230 /* Workarounds for IE6's broken and incomplete CSS2. */\r
231 \r
232 div.sidebar-content {\r
233   background: #ffffee;\r
234   border: 1px solid silver;\r
235   padding: 0.5em;\r
236 }\r
237 div.sidebar-title, div.image-title {\r
238   font-family: sans-serif;\r
239   font-weight: bold;\r
240   margin-top: 0.0em;\r
241   margin-bottom: 0.5em;\r
242 }\r
243 \r
244 div.listingblock div.content {\r
245   border: 1px solid silver;\r
246   background: #f4f4f4;\r
247   padding: 0.5em;\r
248 }\r
249 \r
250 div.quoteblock-content {\r
251   padding-left: 2.0em;\r
252 }\r
253 \r
254 div.exampleblock-content {\r
255   border-left: 2px solid silver;\r
256   padding-left: 0.5em;\r
257 }\r
258 </style>\r
259 <title>git-reset(1)</title>\r
260 </head>\r
261 <body>\r
262 <div id="header">\r
263 <h1>\r
264 git-reset(1) Manual Page\r
265 </h1>\r
266 <h2>NAME</h2>\r
267 <div class="sectionbody">\r
268 <p>git-reset -\r
269    Reset current HEAD to the specified state\r
270 </p>\r
271 </div>\r
272 </div>\r
273 <h2>SYNOPSIS</h2>\r
274 <div class="sectionbody">\r
275 <p><em>git-reset</em> [--mixed | --soft | --hard] [&lt;commit-ish&gt;]</p>\r
276 </div>\r
277 <h2>DESCRIPTION</h2>\r
278 <div class="sectionbody">\r
279 <p>Sets the current head to the specified commit and optionally resets the\r
280 index and working tree to match.</p>\r
281 <p>This command is useful if you notice some small error in a recent\r
282 commit (or set of commits) and want to redo that part without showing\r
283 the undo in the history.</p>\r
284 <p>If you want to undo a commit other than the latest on a branch,\r
285 <a href="git-revert.html">git-revert(1)</a> is your friend.</p>\r
286 </div>\r
287 <h2>OPTIONS</h2>\r
288 <div class="sectionbody">\r
289 <dl>\r
290 <dt>\r
291 --mixed\r
292 </dt>\r
293 <dd>\r
294 <p>\r
295         Resets the index but not the working tree (ie, the changed files\r
296         are preserved but not marked for commit) and reports what has not\r
297         been updated. This is the default action.\r
298 </p>\r
299 </dd>\r
300 <dt>\r
301 --soft\r
302 </dt>\r
303 <dd>\r
304 <p>\r
305         Does not touch the index file nor the working tree at all, but\r
306         requires them to be in a good order. This leaves all your changed\r
307         files "Updated but not checked in", as <a href="git-status.html">git-status(1)</a> would\r
308         put it.\r
309 </p>\r
310 </dd>\r
311 <dt>\r
312 --hard\r
313 </dt>\r
314 <dd>\r
315 <p>\r
316         Matches the working tree and index to that of the tree being\r
317         switched to. Any changes to tracked files in the working tree\r
318         since &lt;commit-ish&gt; are lost.\r
319 </p>\r
320 </dd>\r
321 <dt>\r
322 &lt;commit-ish&gt;\r
323 </dt>\r
324 <dd>\r
325 <p>\r
326         Commit to make the current HEAD.\r
327 </p>\r
328 </dd>\r
329 </dl>\r
330 <h3>Examples</h3>\r
331 <dl>\r
332 <dt>\r
333 Undo a commit and redo\r
334 </dt>\r
335 <dd>\r
336 <div class="listingblock">\r
337 <div class="content">\r
338 <pre><tt>$ git commit ...\r
339 $ git reset --soft HEAD^      <b>(1)</b>\r
340 $ edit                        <b>(2)</b>\r
341 $ git commit -a -c ORIG_HEAD  <b>(3)</b></tt></pre>\r
342 </div></div>\r
343 <ol>\r
344 <li>\r
345 <p>\r
346 This is most often done when you remembered what you\r
347 just committed is incomplete, or you misspelled your commit\r
348 message, or both.  Leaves working tree as it was before "reset".\r
349 </p>\r
350 </li>\r
351 <li>\r
352 <p>\r
353 make corrections to working tree files.\r
354 </p>\r
355 </li>\r
356 <li>\r
357 <p>\r
358 "reset" copies the old head to .git/ORIG_HEAD; redo the\r
359 commit by starting with its log message.  If you do not need to\r
360 edit the message further, you can give -C option instead.\r
361 </p>\r
362 </li>\r
363 </ol>\r
364 </dd>\r
365 <dt>\r
366 Undo commits permanently\r
367 </dt>\r
368 <dd>\r
369 <div class="listingblock">\r
370 <div class="content">\r
371 <pre><tt>$ git commit ...\r
372 $ git reset --hard HEAD~3   <b>(1)</b></tt></pre>\r
373 </div></div>\r
374 <ol>\r
375 <li>\r
376 <p>\r
377 The last three commits (HEAD, HEAD^, and HEAD~2) were bad\r
378 and you do not want to ever see them again.  Do <strong>not</strong> do this if\r
379 you have already given these commits to somebody else.\r
380 </p>\r
381 </li>\r
382 </ol>\r
383 </dd>\r
384 <dt>\r
385 Undo a commit, making it a topic branch\r
386 </dt>\r
387 <dd>\r
388 <div class="listingblock">\r
389 <div class="content">\r
390 <pre><tt>$ git branch topic/wip     <b>(1)</b>\r
391 $ git reset --hard HEAD~3  <b>(2)</b>\r
392 $ git checkout topic/wip   <b>(3)</b></tt></pre>\r
393 </div></div>\r
394 <ol>\r
395 <li>\r
396 <p>\r
397 You have made some commits, but realize they were premature\r
398 to be in the "master" branch.  You want to continue polishing\r
399 them in a topic branch, so create "topic/wip" branch off of the\r
400 current HEAD.\r
401 </p>\r
402 </li>\r
403 <li>\r
404 <p>\r
405 Rewind the master branch to get rid of those three commits.\r
406 </p>\r
407 </li>\r
408 <li>\r
409 <p>\r
410 Switch to "topic/wip" branch and keep working.\r
411 </p>\r
412 </li>\r
413 </ol>\r
414 </dd>\r
415 <dt>\r
416 Undo update-index\r
417 </dt>\r
418 <dd>\r
419 <div class="listingblock">\r
420 <div class="content">\r
421 <pre><tt>$ edit                                     <b>(1)</b>\r
422 $ git-update-index frotz.c filfre.c\r
423 $ mailx                                    <b>(2)</b>\r
424 $ git reset                                <b>(3)</b>\r
425 $ git pull git://info.example.com/ nitfol  <b>(4)</b></tt></pre>\r
426 </div></div>\r
427 <ol>\r
428 <li>\r
429 <p>\r
430 you are happily working on something, and find the changes\r
431 in these files are in good order.  You do not want to see them\r
432 when you run "git diff", because you plan to work on other files\r
433 and changes with these files are distracting.\r
434 </p>\r
435 </li>\r
436 <li>\r
437 <p>\r
438 somebody asks you to pull, and the changes sounds worthy of merging.\r
439 </p>\r
440 </li>\r
441 <li>\r
442 <p>\r
443 however, you already dirtied the index (i.e. your index does\r
444 not match the HEAD commit).  But you know the pull you are going\r
445 to make does not affect frotz.c nor filfre.c, so you revert the\r
446 index changes for these two files.  Your changes in working tree\r
447 remain there.\r
448 </p>\r
449 </li>\r
450 <li>\r
451 <p>\r
452 then you can pull and merge, leaving frotz.c and filfre.c\r
453 changes still in the working tree.\r
454 </p>\r
455 </li>\r
456 </ol>\r
457 </dd>\r
458 <dt>\r
459 Undo a merge or pull\r
460 </dt>\r
461 <dd>\r
462 <div class="listingblock">\r
463 <div class="content">\r
464 <pre><tt>$ git pull                         <b>(1)</b>\r
465 Trying really trivial in-index merge...\r
466 fatal: Merge requires file-level merging\r
467 Nope.\r
468 ...\r
469 Auto-merging nitfol\r
470 CONFLICT (content): Merge conflict in nitfol\r
471 Automatic merge failed/prevented; fix up by hand\r
472 $ git reset --hard                 <b>(2)</b>\r
473 $ git pull . topic/branch          <b>(3)</b>\r
474 Updating from 41223... to 13134...\r
475 Fast forward\r
476 $ git reset --hard ORIG_HEAD       <b>(4)</b></tt></pre>\r
477 </div></div>\r
478 <ol>\r
479 <li>\r
480 <p>\r
481 try to update from the upstream resulted in a lot of\r
482 conflicts; you were not ready to spend a lot of time merging\r
483 right now, so you decide to do that later.\r
484 </p>\r
485 </li>\r
486 <li>\r
487 <p>\r
488 "pull" has not made merge commit, so "git reset --hard"\r
489 which is a synonym for "git reset --hard HEAD" clears the mess\r
490 from the index file and the working tree.\r
491 </p>\r
492 </li>\r
493 <li>\r
494 <p>\r
495 merge a topic branch into the current branch, which resulted\r
496 in a fast forward.\r
497 </p>\r
498 </li>\r
499 <li>\r
500 <p>\r
501 but you decided that the topic branch is not ready for public\r
502 consumption yet.  "pull" or "merge" always leaves the original\r
503 tip of the current branch in ORIG_HEAD, so resetting hard to it\r
504 brings your index file and the working tree back to that state,\r
505 and resets the tip of the branch to that commit.\r
506 </p>\r
507 </li>\r
508 </ol>\r
509 </dd>\r
510 <dt>\r
511 Interrupted workflow\r
512 </dt>\r
513 <dd>\r
514 <p>Suppose you are interrupted by an urgent fix request while you\r
515 are in the middle of a large change.  The files in your\r
516 working tree are not in any shape to be committed yet, but you\r
517 need to get to the other branch for a quick bugfix.</p>\r
518 <div class="listingblock">\r
519 <div class="content">\r
520 <pre><tt>$ git checkout feature ;# you were working in "feature" branch and\r
521 $ work work work       ;# got interrupted\r
522 $ git commit -a -m 'snapshot WIP'                 <b>(1)</b>\r
523 $ git checkout master\r
524 $ fix fix fix\r
525 $ git commit ;# commit with real log\r
526 $ git checkout feature\r
527 $ git reset --soft HEAD^ ;# go back to WIP state  <b>(2)</b>\r
528 $ git reset                                       <b>(3)</b></tt></pre>\r
529 </div></div>\r
530 <ol>\r
531 <li>\r
532 <p>\r
533 This commit will get blown away so a throw-away log message is OK.\r
534 </p>\r
535 </li>\r
536 <li>\r
537 <p>\r
538 This removes the <em>WIP</em> commit from the commit history, and sets\r
539     your working tree to the state just before you made that snapshot.\r
540 </p>\r
541 </li>\r
542 <li>\r
543 <p>\r
544 At this point the index file still has all the WIP changes you\r
545     committed as <em>snapshot WIP</em>.  This updates the index to show your\r
546     WIP files as uncommitted.\r
547 </p>\r
548 </li>\r
549 </ol>\r
550 </dd>\r
551 </dl>\r
552 </div>\r
553 <h2>Author</h2>\r
554 <div class="sectionbody">\r
555 <p>Written by Junio C Hamano &lt;junkio@cox.net&gt; and Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
556 </div>\r
557 <h2>Documentation</h2>\r
558 <div class="sectionbody">\r
559 <p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
560 </div>\r
561 <h2>GIT</h2>\r
562 <div class="sectionbody">\r
563 <p>Part of the <a href="git.html">git(7)</a> suite</p>\r
564 </div>\r
565 <div id="footer">\r
566 <div id="footer-text">\r
567 Last updated 29-Apr-2006 07:01:34 UTC\r
568 </div>\r
569 </div>\r
570 </body>\r
571 </html>\r