blob: ecb21c1df8f00f8b988e1b7ef24b3fbf1885bda6 [file] [log] [blame]
Junio C Hamano1d90cb02007-07-03 07:05:311<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6<meta name="generator" content="AsciiDoc 7.0.2" />
7<style type="text/css">
8/* Debug borders */
9p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
10/*
11 border: 1px solid red;
12*/
13}
14
15body {
16 margin: 1em 5% 1em 5%;
17}
18
19a { color: blue; }
20a:visited { color: fuchsia; }
21
22em {
23 font-style: italic;
24}
25
26strong {
27 font-weight: bold;
28}
29
30tt {
31 color: navy;
32}
33
34h1, h2, h3, h4, h5, h6 {
35 color: #527bbd;
36 font-family: sans-serif;
37 margin-top: 1.2em;
38 margin-bottom: 0.5em;
39 line-height: 1.3;
40}
41
42h1 {
43 border-bottom: 2px solid silver;
44}
45h2 {
46 border-bottom: 2px solid silver;
47 padding-top: 0.5em;
48}
49
50div.sectionbody {
51 font-family: serif;
52 margin-left: 0;
53}
54
55hr {
56 border: 1px solid silver;
57}
58
59p {
60 margin-top: 0.5em;
61 margin-bottom: 0.5em;
62}
63
64pre {
65 padding: 0;
66 margin: 0;
67}
68
69span#author {
70 color: #527bbd;
71 font-family: sans-serif;
72 font-weight: bold;
73 font-size: 1.2em;
74}
75span#email {
76}
77span#revision {
78 font-family: sans-serif;
79}
80
81div#footer {
82 font-family: sans-serif;
83 font-size: small;
84 border-top: 2px solid silver;
85 padding-top: 0.5em;
86 margin-top: 4.0em;
87}
88div#footer-text {
89 float: left;
90 padding-bottom: 0.5em;
91}
92div#footer-badges {
93 float: right;
94 padding-bottom: 0.5em;
95}
96
97div#preamble,
98div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
99div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
100div.admonitionblock {
101 margin-right: 10%;
102 margin-top: 1.5em;
103 margin-bottom: 1.5em;
104}
105div.admonitionblock {
106 margin-top: 2.5em;
107 margin-bottom: 2.5em;
108}
109
110div.content { /* Block element content. */
111 padding: 0;
112}
113
114/* Block element titles. */
115div.title, caption.title {
116 font-family: sans-serif;
117 font-weight: bold;
118 text-align: left;
119 margin-top: 1.0em;
120 margin-bottom: 0.5em;
121}
122div.title + * {
123 margin-top: 0;
124}
125
126td div.title:first-child {
127 margin-top: 0.0em;
128}
129div.content div.title:first-child {
130 margin-top: 0.0em;
131}
132div.content + div.title {
133 margin-top: 0.0em;
134}
135
136div.sidebarblock > div.content {
137 background: #ffffee;
138 border: 1px solid silver;
139 padding: 0.5em;
140}
141
142div.listingblock > div.content {
143 border: 1px solid silver;
144 background: #f4f4f4;
145 padding: 0.5em;
146}
147
148div.quoteblock > div.content {
149 padding-left: 2.0em;
150}
151div.quoteblock .attribution {
152 text-align: right;
153}
154
155div.admonitionblock .icon {
156 vertical-align: top;
157 font-size: 1.1em;
158 font-weight: bold;
159 text-decoration: underline;
160 color: #527bbd;
161 padding-right: 0.5em;
162}
163div.admonitionblock td.content {
164 padding-left: 0.5em;
165 border-left: 2px solid silver;
166}
167
168div.exampleblock > div.content {
169 border-left: 2px solid silver;
170 padding: 0.5em;
171}
172
173div.verseblock div.content {
174 white-space: pre;
175}
176
177div.imageblock div.content { padding-left: 0; }
178div.imageblock img { border: 1px solid silver; }
179span.image img { border-style: none; }
180
181dl {
182 margin-top: 0.8em;
183 margin-bottom: 0.8em;
184}
185dt {
186 margin-top: 0.5em;
187 margin-bottom: 0;
188 font-style: italic;
189}
190dd > *:first-child {
191 margin-top: 0;
192}
193
194ul, ol {
195 list-style-position: outside;
196}
197ol.olist2 {
198 list-style-type: lower-alpha;
199}
200
201div.tableblock > table {
202 border-color: #527bbd;
203 border-width: 3px;
204}
205thead {
206 font-family: sans-serif;
207 font-weight: bold;
208}
209tfoot {
210 font-weight: bold;
211}
212
213div.hlist {
214 margin-top: 0.8em;
215 margin-bottom: 0.8em;
216}
217td.hlist1 {
218 vertical-align: top;
219 font-style: italic;
220 padding-right: 0.8em;
221}
222td.hlist2 {
223 vertical-align: top;
224}
225
226@media print {
227 div#footer-badges { display: none; }
228}
229include::./stylesheets/xhtml11-manpage.css[]
230/* Workarounds for IE6's broken and incomplete CSS2. */
231
232div.sidebar-content {
233 background: #ffffee;
234 border: 1px solid silver;
235 padding: 0.5em;
236}
237div.sidebar-title, div.image-title {
238 font-family: sans-serif;
239 font-weight: bold;
240 margin-top: 0.0em;
241 margin-bottom: 0.5em;
242}
243
244div.listingblock div.content {
245 border: 1px solid silver;
246 background: #f4f4f4;
247 padding: 0.5em;
248}
249
250div.quoteblock-content {
251 padding-left: 2.0em;
252}
253
254div.exampleblock-content {
255 border-left: 2px solid silver;
256 padding-left: 0.5em;
257}
258</style>
259<title>git-stash(1)</title>
260</head>
261<body>
262<div id="header">
263<h1>
264git-stash(1) Manual Page
265</h1>
266<h2>NAME</h2>
267<div class="sectionbody">
268<p>git-stash -
269 Stash the changes in a dirty working directory away
270</p>
271</div>
272</div>
273<h2>SYNOPSIS</h2>
274<div class="sectionbody">
275<div class="verseblock">
Junio C Hamanobb6e0782007-07-19 02:14:50276<div class="content"><em>git-stash</em> (list | show [&lt;stash&gt;] | apply [&lt;stash&gt;] | clear)
277<em>git-stash</em> [save] [message&#8230;]</div></div>
Junio C Hamano1d90cb02007-07-03 07:05:31278</div>
279<h2>DESCRIPTION</h2>
280<div class="sectionbody">
281<p>Use <em>git-stash</em> when you want to record the current state of the
282working directory and the index, but want to go back to a clean
283working directory. The command saves your local modifications away
284and reverts the working directory to match the <tt>HEAD</tt> commit.</p>
285<p>The modifications stashed away by this command can be listed with
286<tt>git-stash list</tt>, inspected with <tt>git-stash show</tt>, and restored
287(potentially on top of a different commit) with <tt>git-stash apply</tt>.
288Calling git-stash without any arguments is equivalent to <tt>git-stash
Junio C Hamanobb6e0782007-07-19 02:14:50289save</tt>. A stash is by default listed as "WIP on <em>branchname</em> &#8230;", but
290you can give a more descriptive message on the command line when
291you create one.</p>
Junio C Hamano1d90cb02007-07-03 07:05:31292<p>The latest stash you created is stored in <tt>$GIT_DIR/refs/stash</tt>; older
293stashes are found in the reflog of this reference and can be named using
Junio C Hamanob515b6a2007-08-08 09:21:16294the usual reflog syntax (e.g. <tt>stash@{0}</tt> is the most recently
295created stash, <tt>stash@{1}</tt> is the one before it, <tt>stash@{2.hours.ago}</tt>
Junio C Hamano1d90cb02007-07-03 07:05:31296is also possible).</p>
297</div>
298<h2>OPTIONS</h2>
299<div class="sectionbody">
300<dl>
301<dt>
302save
303</dt>
304<dd>
305<p>
306 Save your local modifications to a new <em>stash</em>, and run <tt>git-reset
307 --hard</tt> to revert them. This is the default action when no
308 subcommand is given.
309</p>
310</dd>
311<dt>
312list
313</dt>
314<dd>
315<p>
316 List the stashes that you currently have. Each <em>stash</em> is listed
Junio C Hamanob515b6a2007-08-08 09:21:16317 with its name (e.g. <tt>stash@{0}</tt> is the latest stash, <tt>stash@{1}</tt> is
Junio C Hamano1d90cb02007-07-03 07:05:31318 the one before, etc.), the name of the branch that was current when the
319 stash was made, and a short description of the commit the stash was
320 based on.
321</p>
322<div class="listingblock">
323<div class="content">
Junio C Hamanobb6e0782007-07-19 02:14:50324<pre><tt>stash@{0}: WIP on submit: 6ebd0e2... Update git-stash documentation
325stash@{1}: On master: 9cc0589... Add git-stash</tt></pre>
Junio C Hamano1d90cb02007-07-03 07:05:31326</div></div>
327</dd>
328<dt>
329show [&lt;stash&gt;]
330</dt>
331<dd>
332<p>
Junio C Hamano764a6672007-10-23 01:23:31333 Show the changes recorded in the stash as a diff between the
Junio C Hamano1d90cb02007-07-03 07:05:31334 stashed state and its original parent. When no <tt>&lt;stash&gt;</tt> is given,
335 shows the latest one. By default, the command shows the diffstat, but
336 it will accept any format known to <tt>git-diff</tt> (e.g., <tt>git-stash show
Junio C Hamanob515b6a2007-08-08 09:21:16337 -p stash@{1}</tt> to view the second most recent stash in patch form).
Junio C Hamano1d90cb02007-07-03 07:05:31338</p>
339</dd>
340<dt>
Junio C Hamano58992c92007-10-01 16:23:18341apply [--index] [&lt;stash&gt;]
Junio C Hamano1d90cb02007-07-03 07:05:31342</dt>
343<dd>
344<p>
345 Restore the changes recorded in the stash on top of the current
346 working tree state. When no <tt>&lt;stash&gt;</tt> is given, applies the latest
347 one. The working directory must match the index.
348</p>
349<p>This operation can fail with conflicts; you need to resolve them
350by hand in the working tree.</p>
Junio C Hamano58992c92007-10-01 16:23:18351<p>If the <tt>--index</tt> option is used, then tries to reinstate not only the working
352tree's changes, but also the index's ones. However, this can fail, when you
353have conflicts (which are stored in the index, where you therefore can no
354longer apply the changes as they were originally).</p>
Junio C Hamano1d90cb02007-07-03 07:05:31355</dd>
356<dt>
357clear
358</dt>
359<dd>
360<p>
361 Remove all the stashed states. Note that those states will then
362 be subject to pruning, and may be difficult or impossible to recover.
363</p>
364</dd>
365</dl>
366</div>
367<h2>DISCUSSION</h2>
368<div class="sectionbody">
369<p>A stash is represented as a commit whose tree records the state of the
370working directory, and its first parent is the commit at <tt>HEAD</tt> when
371the stash was created. The tree of the second parent records the
372state of the index when the stash is made, and it is made a child of
373the <tt>HEAD</tt> commit. The ancestry graph looks like this:</p>
374<div class="literalblock">
375<div class="content">
376<pre><tt> .----W
377 / /
Junio C Hamano28d8ede2007-07-05 05:51:38378-----H----I</tt></pre>
Junio C Hamano1d90cb02007-07-03 07:05:31379</div></div>
380<p>where <tt>H</tt> is the <tt>HEAD</tt> commit, <tt>I</tt> is a commit that records the state
381of the index, and <tt>W</tt> is a commit that records the state of the working
382tree.</p>
383</div>
384<h2>EXAMPLES</h2>
385<div class="sectionbody">
386<dl>
387<dt>
388Pulling into a dirty tree
389</dt>
390<dd>
391<p>
392When you are in the middle of something, you learn that there are
393upstream changes that are possibly relevant to what you are
394doing. When your local changes do not conflict with the changes in
395the upstream, a simple <tt>git pull</tt> will let you move forward.
396</p>
397<p>However, there are cases in which your local changes do conflict with
398the upstream changes, and <tt>git pull</tt> refuses to overwrite your
399changes. In such a case, you can stash your changes away,
400perform a pull, and then unstash, like this:</p>
401<div class="listingblock">
402<div class="content">
403<pre><tt>$ git pull
404...
405file foobar not up to date, cannot merge.
406$ git stash
407$ git pull
408$ git stash apply</tt></pre>
409</div></div>
410</dd>
411<dt>
412Interrupted workflow
413</dt>
414<dd>
415<p>
416When you are in the middle of something, your boss comes in and
417demands that you fix something immediately. Traditionally, you would
418make a commit to a temporary branch to store your changes away, and
419return to your original branch to make the emergency fix, like this:
420</p>
421<div class="listingblock">
422<div class="content">
423<pre><tt>... hack hack hack ...
424$ git checkout -b my_wip
425$ git commit -a -m "WIP"
426$ git checkout master
427$ edit emergency fix
428$ git commit -a -m "Fix in a hurry"
429$ git checkout my_wip
430$ git reset --soft HEAD^
431... continue hacking ...</tt></pre>
432</div></div>
433<p>You can use <tt>git-stash</tt> to simplify the above, like this:</p>
434<div class="listingblock">
435<div class="content">
436<pre><tt>... hack hack hack ...
437$ git stash
438$ edit emergency fix
439$ git commit -a -m "Fix in a hurry"
440$ git stash apply
441... continue hacking ...</tt></pre>
442</div></div>
443</dd>
444</dl>
445</div>
446<h2>SEE ALSO</h2>
447<div class="sectionbody">
448<p><a href="git-checkout.html">git-checkout(1)</a>,
449<a href="git-commit.html">git-commit(1)</a>,
450<a href="git-reflog.html">git-reflog(1)</a>,
451<a href="git-reset.html">git-reset(1)</a></p>
452</div>
453<h2>AUTHOR</h2>
454<div class="sectionbody">
455<p>Written by Nanako Shiraishi &lt;nanako3@bluebottle.com&gt;</p>
456</div>
457<h2>GIT</h2>
458<div class="sectionbody">
459<p>Part of the <a href="git.html">git(7)</a> suite</p>
460</div>
461<div id="footer">
462<div id="footer-text">
Junio C Hamano764a6672007-10-23 01:23:31463Last updated 23-Oct-2007 01:21:58 UTC
Junio C Hamano1d90cb02007-07-03 07:05:31464</div>
465</div>
466</body>
467</html>