From b4f20fb621828a8d8fc0abe120cd151887dc0321 Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Mon, 26 May 2014 19:38:22 -0700 Subject: [PATCH 1/7] Port three-trees article --- en/book/02-git-basics/chapter2.asc | 308 ++++++++++++++++++++++++++++- en/book/images/reset-checkout.png | Bin 0 -> 11611 bytes en/book/images/reset-ex2.png | Bin 0 -> 7143 bytes en/book/images/reset-ex3.png | Bin 0 -> 8256 bytes en/book/images/reset-ex4.png | Bin 0 -> 9549 bytes en/book/images/reset-ex5.png | Bin 0 -> 9452 bytes en/book/images/reset-ex6.png | Bin 0 -> 9371 bytes en/book/images/reset-ex7.png | Bin 0 -> 10316 bytes en/book/images/reset-hard.png | Bin 0 -> 12591 bytes en/book/images/reset-mixed.png | Bin 0 -> 12799 bytes en/book/images/reset-path1.png | Bin 0 -> 9904 bytes en/book/images/reset-path2.png | Bin 0 -> 9801 bytes en/book/images/reset-path3.png | Bin 0 -> 12077 bytes en/book/images/reset-soft.png | Bin 0 -> 12151 bytes en/book/images/reset-squash-r1.png | Bin 0 -> 14280 bytes en/book/images/reset-squash-r2.png | Bin 0 -> 14773 bytes en/book/images/reset-squash-r3.png | Bin 0 -> 17076 bytes en/book/images/reset-workflow.png | Bin 0 -> 17282 bytes 18 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 en/book/images/reset-checkout.png create mode 100644 en/book/images/reset-ex2.png create mode 100644 en/book/images/reset-ex3.png create mode 100644 en/book/images/reset-ex4.png create mode 100644 en/book/images/reset-ex5.png create mode 100644 en/book/images/reset-ex6.png create mode 100644 en/book/images/reset-ex7.png create mode 100644 en/book/images/reset-hard.png create mode 100644 en/book/images/reset-mixed.png create mode 100644 en/book/images/reset-path1.png create mode 100644 en/book/images/reset-path2.png create mode 100644 en/book/images/reset-path3.png create mode 100644 en/book/images/reset-soft.png create mode 100644 en/book/images/reset-squash-r1.png create mode 100644 en/book/images/reset-squash-r2.png create mode 100644 en/book/images/reset-squash-r3.png create mode 100644 en/book/images/reset-workflow.png diff --git a/en/book/02-git-basics/chapter2.asc b/en/book/02-git-basics/chapter2.asc index bef21f515..f721500ca 100644 --- a/en/book/02-git-basics/chapter2.asc +++ b/en/book/02-git-basics/chapter2.asc @@ -76,7 +76,7 @@ You need to make some changes and commit snapshots of those changes into your re Remember that each file in your working directory can be in one of two states: tracked or untracked. Tracked files are files that were in the last snapshot; they can be unmodified, modified, or staged. -Untracked files are everything else - any files in your working directory that were not in your last snapshot and are not in your staging area. +Untracked files are everything else – any files in your working directory that were not in your last snapshot and are not in your staging area. When you first clone a repository, all of your files will be tracked and unmodified because you just checked them out and haven’t edited anything. As you edit files, Git sees them as modified, because you’ve changed them since your last commit. @@ -905,18 +905,324 @@ This is one of the few areas in Git where you may lose some work if you do it wr ===== The Three Trees +The way I now like to think about `reset` and `checkout` is through the mental frame of Git being a content manager of three different trees. +By ``tree'' here I really mean ``collection of files'', not specifically the data structure. +(Some Git developers will get a bit mad at me here, because there are a few cases where the index doesn't exactly act like a tree, but for our purposes it is easier – forgive me). + +Git as a system manages and manipulates three trees in its normal operation. +Let's review them: + +[cols="2,4",options="header"] +|================================ +| Tree | Role +| HEAD | Last commit snapshot, next parent +| Index | Proposed next commit snapshot +| Working Directory | Sandbox +|================================ + +====== The HEAD + +The HEAD in Git is the pointer to the current branch reference, which is in turn a pointer to the last commit you made or the last commit that was checked out into your working directory. +That also means it will be the parent of the next commit you do. +It's generally simplest to think of it as HEAD is the snapshot of your last commit. + +In fact, it's pretty easy to see what the snapshot of your HEAD looks like. +Here is an example of getting the actual directory listing and SHA checksums for each file in the HEAD snapshot: + +[source,shell] +---- +$ cat .git/HEAD +ref: refs/heads/master + +$ cat .git/refs/heads/master +e9a570524b63d2a2b3a7c3325acf5b89bbeb131e + +$ git cat-file -p e9a570524b63d2a2b3a7c3325acf5b89bbeb131e +tree cfda3bf379e4f8dba8717dee55aab78aef7f4daf +author Scott Chacon 1301511835 -0700 +committer Scott Chacon 1301511835 -0700 + +initial commit + +$ git ls-tree -r cfda3bf379e4f8dba8717dee55aab78aef7f4daf +100644 blob a906cb2a4a904a152... README +100644 blob 8f94139338f9404f2... Rakefile +040000 tree 99f1a6d12cb4b6f19... lib +---- + +====== The Index + +The Index is your proposed next commit. +Git populates it with a list of all the file contents that were last checked out into your working directory and what they looked like when they were originally checked out. +It's not technically a tree structure, it's a flattened manifest, but for our purposes it's close enough. +When you run git commit, that command only looks at your Index by default, not at anything in your working directory. +So, it's simplest to think of it as the Index is the snapshot of your next commit. + +[source,shell] +---- +$ git ls-files -s +100644 a906cb2a4a904a152e80877d4088654daad0c859 0 README +100644 8f94139338f9404f26296befa88755fc2598c289 0 Rakefile +100644 47c6340d6459e05787f644c2447d2595f5d3a54b 0 lib/simplegit.rb +---- + +====== The Working Directory + +Finally, you have your working directory. +This is where the content of files are placed into actual files on your filesystem so they're easily edited by you. +The Working Directory is your scratch space, used to easily modify file content. + +[source,shell] +---- +$ tree +. +├── README +├── Rakefile +└── lib + └── simplegit.rb + +1 directory, 3 files +---- + ===== The Workflow +So, Git is all about recording snapshots of your project in successively better states by manipulating these three trees, or collections of contents of files. + +image::images/reset-workflow.png[] + +Let's visualize this process. +Say you go into a new directory with a single file in it. +We'll call this V1 of the file and we'll indicate it in blue. +Now we run git init, which will create a Git repository with a HEAD reference that points to an unborn branch (aka, nothing). + +image::images/reset-ex2.png[] + +At this point, only the Working Directory tree has any content. + +Now we want to commit this file, so we use `git add` to take content in the Working Directory and populate the Index with the updated content. + +image::images/reset-ex3.png[] + +Then we run git commit to take what the Index looks like now and save it as a permanent snapshot pointed to by a commit, which HEAD is then updated to point at. + +image::images/reset-ex4.png[] + +At this point, all three of the trees are the same. +If we run `git status` now, we'll see no changes because they're all the same. + +Now we want to make a change to that file and commit it. +We will go through the same process. +First we change the file in our working directory. + +image::images/reset-ex5.png[] + +If we run `git status` right now we'll see the file in red as +``changed but not updated'' because that entry differs between our Index and our Working Directory. +Next we run `git add` on it to stage it into our Index. + +image::images/reset-ex6.png[] + +At this point if we run `git status` we will see the file in green +under ``Changes to be Committed'' because the Index and HEAD differ – that is, our proposed next commit is now different from our last commit. +Those are the entries we will see as ``to be Committed''. +Finally, we run `git commit` to finalize the commit. + +image::images/reset-ex7.png[] + +Now `git status` will give us no output because all three trees are the same. + +Switching branches or cloning goes through a similar process. +When you checkout a branch, it changes *HEAD* to point to the new commit, populates your *Index* with the snapshot of that commit, then checks out the contents of the files in your *Index* into your *Working Directory*. + ===== The Role of Reset +So the `reset` command makes more sense when viewed in this context. +It directly manipulates these three trees in a simple and predictable way. +It does up to three basic operations. + +====== Step 1: Moving HEAD (`--soft`) + +The first thing `reset` will do is move what HEAD points to. +Unlike `checkout` it does not move what branch HEAD points to, it directly changes the SHA of the reference itself. +This means if HEAD is pointing to the `master` branch, running `git reset 9e5e64a` will first of all make `master` point to `9e5e64a` before it does anything else. + +image::images/reset-soft.png[] + +No matter what form of `reset` with a commit you invoke, this is the first thing it will always try to do. +If you add the flag `--soft`, this is the *only* thing it will do. +With `--soft`, `reset` will simply stop there. + +Now take a second to look at that diagram and realize what it did. +It essentially undid the last commit you made. +When you run `git commit`, Git will create a new commit and move the branch that HEAD points to up to it. +When you `reset` back to `HEAD~` (the parent of HEAD), you are moving the branch back to where it was without changing the Index (staging area) or Working Directory. +You could now do a bit more work and `commit` again to accomplish basically what `git commit --amend` would have done. + +====== Step 2: Updating the Index (`--mixed`) + +Note that if you run `git status` now you'll see in green the difference between the Index and what the new HEAD is. + +The next thing `reset` will do is to update the Index with the contents of whatever tree HEAD now points to so they're the same. + +image::images/reset-mixed.png[] + +If you specify the `--mixed` option, `reset` will stop at this point. +This is also the default, so if you specify no option at all, this is where the command will stop. + +Now take another second to look at THAT diagram and realize what it did. +It still undid your last `commit`, but also _unstaged_ everything. +You rolled back to before you ran all your `git add`s _AND_ `git commit`. + +====== Step 3: Updating the Working Directory (`--hard`) + +The third thing that `reset` will do is to then make the Working Directory look like the Index. +If you use the `--hard` option, it will continue to this stage. + +image::images/reset-hard.png[] + +Finally, take yet a third second to look at _that_ diagram and think about what happened. +You undid your last commit, all the `git add`s, _and_ all the work you did in your working directory. + +It's important to note at this point that this is the only way to make the `reset` command dangerous (ie: not working directory safe). +Any other invocation of `reset` can be pretty easily undone, the `--hard` option cannot, since it overwrites (without checking) any files in the Working Directory. +In this particular case, we still have the *V3* version of our file in a commit in our Git DB that we could get back by looking at our `reflog`, but if we had not committed it, Git still would have overwritten the file. + +====== Overview + +That is basically it. +The `reset` command overwrites these three trees in a specific order, stopping when you tell it to. + +1. Move whatever branch HEAD points to _(stop if `--soft`)_ +2. THEN, make the Index look like that _(stop here unless `--hard`)_ +3. THEN, make the Working Directory look like that + +There are also `--merge` and `--keep` options, but I would rather keep things simpler for now – that will be for another article. + +Boom. You are now a `reset` master. + ===== Reset With a Path + +Well, I lied. +That's not actually all. +If you specify a path, `reset` will skip the first step and just do the other ones but limited to a specific file or set of files. +This actually sort of makes sense – if the first step is to move a pointer to a different commit, you can't make it point to _part_ of a commit, so it simply doesn't do that part. +However, you can use `reset` to update part of the Index or the Working Directory with previously committed content this way. + +So, assume we run `git reset file.txt`. +This assumes, since you did not specify a commit SHA or branch that points to a commit SHA, and that you provided no reset option, that you are typing the shorthand for `git reset --mixed HEAD file.txt`, which will: + +1. Move whatever branch HEAD points to _(stop if `--soft`)_ *TODO: strikethrough* +2. THEN, make the Index look like that _(stop here unless `--hard`)_ + +So it essentially just takes whatever `file.txt` looks like in HEAD and puts that in the Index. + +image::images/reset-path1.png[] + +So what does that do in a practical sense? +Well, it _unstages_ the file. +If we look at the diagram for that command vs what `git add` does, we can see that it is simply the opposite. +This is why the output of the `git status` command suggests that you run this to unstage a file. + +image::images/reset-path2.png[] + +We could just as easily not let Git assume we meant ``pull the data from HEAD'' by specifying a specific commit to pull that file version from to populate our Index by running something like `git reset eb43bf file.txt`. + +image::images/reset-path3.png[] + +So what does that mean? +That functionally does the same thing as if we had reverted the content of the file to *v1*, ran `git add` on it, then reverted it back to to *v3* again. +If we run `git commit`, it will record a change that reverts that file back to *v1*, even though we never actually had it in our Working Directory again. + +It's also pretty interesting to note that like `git add --patch`, the `reset` command will accept a `--patch` option to unstage content on a hunk-by-hunk basis. +So you can selectively unstage or revert content. + ===== A Fun Example +I may use the term ``fun'' here a bit loosely, but if this doesn't sound like fun to you, you may drink while doing it. +Let's look at how to do something interesting with this newfound power – squashing commits. + +If you have this history and you're about to push and you want to squash down the last N commits you've done into one awesome commit that makes you look really smart (vs a bunch of commits with messages like ``oops.'', ``WIP'' and ``forgot this file'') you can use `reset` to quickly and easily do that (as opposed to using `git rebase -i`). + +So, let's take a slightly more complex example. +Let's say you have a project where the first commit has one file, the second commit added a new file and changed the first, and the third commit changed the first file again. +The second commit was a work in progress and you want to squash it down. + +image::images/reset-squash-r1.png[] + +You can run `git reset --soft HEAD~2` to move the HEAD branch back to an older commit (the first commit you want to keep): + +image::images/reset-squash-r2.png[] + +And then simply run `git commit` again: + +image::images/reset-squash-r3.png[] + +Now you can see that your reachable history, the history you would push, now looks like you had one commit with the one file, then a second that both added the new file and modified the first to it's final state. + + ===== Check It Out +Finally, some of you may wonder what the difference between `checkout` and `reset` is. +Well, like `reset`, `checkout` manipulates the three trees and it is a bit different depending on whether you give the command a file path or not. +So, let's look at both examples seperately. + + +====== `git checkout [branch]` + +Running `git checkout [branch]` is pretty similar to running `git reset --hard [branch]` in that it updates all three trees for you to look like `[branch]`, but there are two important differences. + +First, unlike `reset --hard`, `checkout` is working directory safe in this invocation. +It will check to make sure it's not blowing away files that have changes to them. +Actually, this is a subtle difference, because it will update all of the working directory except the files you've modified if it can – it will do a trivial merge between what you're checking out and what's already there. +In this case, `reset --hard` will simply replace everything across the board without checking. + +The second important difference is how it updates HEAD. +Where `reset` will move the branch that HEAD points to, `checkout` will move HEAD itself to point to another branch. + +For instance, if we have two branches, `master` and `develop` pointing at different commits, and we're currently on `develop` (so HEAD points to it) and we run `git reset master`, `develop` itself will now point to the same commit that `master` does. + +On the other hand, if we instead run `git checkout master`, `develop` will not move, HEAD itself will. +HEAD will now point to `master`. +So, in both cases we're moving HEAD to point to commit A, but _how_ we do so is very different. +`reset` will move the branch HEAD points to, `checkout` moves HEAD itself to point to another branch. + +image::images/reset-checkout.png[] + +====== `git checkout [branch] file` + +The other way to run `checkout` is with a file path, which like `reset`, does not move HEAD. +It is just like `git reset [branch] file` in that it updates the index with that file at that commit, but it also overwrites the file in the working directory. +Think of it like `git reset --hard [branch] file` – it would be exactly the same thing, it is also not working directory safe and it also does not move HEAD. +The only difference is that `reset` with a file name will not accept `--hard`, so you can't actually run that. + +Also, like `git reset` and `git add`, `checkout` will accept a `--patch` option to allow you to selectively revert file contents on a hunk-by-hunk basis. + ===== Summary +Hopefully now you understand and feel more comfortable with the `reset` command, but are probably still a little confused about how exactly it differs from `checkout` and could not possibly remember all the rules of the different invocations. + +So to help you out, I've created something that I pretty much hate, which is a table. +However, if you've followed the article at all, it may be a useful cheat sheet or reminder. +The table shows each class of the `reset` and `checkout` commands and which of the three trees it updates. + +Pay especial attention to the 'WD Safe?' +column – if it's red, really think about it before you run that command. + +[options="header", cols="2,1,1,1,1"] +|================================ +| | HEAD | Index | Workdir | WD Safe +| *Commit Level* | | | | +| `reset --soft [commit]` | REF | NO | NO | YES +| `reset [commit]` | REF | YES | NO | YES +| `reset --hard [commit]` | REF | YES | YES | NO +| `checkout [commit]` | HEAD | YES | YES | YES +| *File Level* | | | | +| `reset (commit) [file]` | NO | YES | NO | YES +| `checkout (commit) [file]` | NO | YES | YES | NO +|================================ + + ==== Changing Your Last Commit One of the common undos takes place when you commit too early and possibly forget to add some files, or you mess up your commit message. diff --git a/en/book/images/reset-checkout.png b/en/book/images/reset-checkout.png new file mode 100644 index 0000000000000000000000000000000000000000..4a633699d918a8e1957e2c8af8a064d968931fc8 GIT binary patch literal 11611 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

$<6#EXMpc2AhC4S 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 AtpET3 literal 0 HcmV?d00001 diff --git a/en/book/images/reset-ex3.png b/en/book/images/reset-ex3.png new file mode 100644 index 0000000000000000000000000000000000000000..c672d9521fa245d0c82ea9a33a44e37903bba5da GIT binary patch literal 8256 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 ml}Jm0h#rgjzY&NEL^Fgj^iI!J{ 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 literal 0 HcmV?d00001 diff --git a/en/book/images/reset-ex6.png b/en/book/images/reset-ex6.png new file mode 100644 index 0000000000000000000000000000000000000000..77ef91d665915eea15494dc5e7573a0d22c1e99d GIT binary patch literal 9371 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 WQ*g74zWx;jP?pz_Yn1sI@xK7A(?{X} literal 0 HcmV?d00001 diff --git a/en/book/images/reset-hard.png b/en/book/images/reset-hard.png new file mode 100644 index 0000000000000000000000000000000000000000..d10c623c3ba683114a1465d3072405f466f83a58 GIT binary patch literal 12591 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 F{ui)=u>t@9 literal 0 HcmV?d00001 diff --git a/en/book/images/reset-mixed.png b/en/book/images/reset-mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..b8da845107ea4a7b1cd7173d48153c5fe483204a GIT binary patch literal 12799 zcmZX41yEc;mo*mLCAbU(2=4CgPH>k%a2ed45Zv80I0V<=ZiBlscz^-IV4H8N_OGpf zyIxnFd#mfd^SaOL>biZutErW>_G7Pa(#VmTYKAOX`G~_B;4sT7~_Wq9H+v$U=dn>6=ZR0ChrFAwQ zAuiu52G@?_T@CjR_Gd4;d#Z|mWLKHQ^&iZR$9Ep()%Edx30)oT4vf#@r@=J@CPCL1 zruJ&DAG!mQ{m+&_koArDX3*T({oLFvFCUL@RPxmH6cHue<;6u>|Hc3WFp@9yr7kB=AswJYe`{(kzv#l!0W=du)X~J)-ssTA zK-)|U&;!^w*sv%-;^gG4_(d_hD!XsBS4ly>a;d*K*X^G?a>I51txi-_WKc*zVPlb+ z1u!KeLEONUThW+bQm$txud=N&E-qF@lG9p;dyS;xfC*Vo5TN0#n0 zV^p|qenC1K76Bq6VpYQr8g@Zia-#OWSPVQm3k!>B(9f)_toXusD=%9ITU8=V^g#hq z8ylPCfhK;oPxy2~4P6Z>bxD!Ak&2w;G3Bkn)=J57PRU}SZ2z<(57boE`f>vaoT}Nm z?|-Fz)|$@g&4a|6Z`xiy{)u=!vwL<*U8SEc?E`l0YFY$9_BOd#AGhBS$M4_EHy9g6GK}1p`W?QYsi?%D zY88Sssc=#s$hCeHu+wyH{}{lgqVmH^GWxh&V+Sd8-kMcxTRy5o;$7&o&peJSeJ4qT zD!Z?REfeu*cYX>3vpK|yO0i_CCH7o@OGkDP{JoH$BFgq9&@u#-Cfp3-J@4d$Uc3+T z&x&CXnL4_%fao!NDMv59Q;9&Gr`%|LMJ^dtoc|>ropF4pyLm&DO(1k!K@N@ggLzT8v^wk*LN~d3 zg{e%~Jd6JTNU2e!Vd^zqyxuDvRqiApIlKeFc-h|cPc(y(Hlc2@x5) zMexFN^gf}NOxCX6NW?Db4S?OW$kB$pi9_d)bY>_+v6nkkI64pUf8V|SDAC}s{_=&x zx2EQ+2zLKEL8#YZX+`6udVeqdwUk`m3_PJz7scnKy=0%hGAs zV@}p>$+*4pa_-mnkMPBXiIaZBnJO-C!LgE5XVf1m^wGU^B&mU2zZzx2e>6505##Um zKfXj{3_fA*+zdmaX$_UxtcZAUxBoK4FkzEBFD6ezmg#mq$BU8Y8|AX&R1tMW_U9(A z5H>$a7ckg8xu~dRnUWr$pI$?Py_7yyNN$INoAH}6gkJX_p>Z)RL>HEXhZe6G z3bobWQrGv?_mSNGDZya961gZZhH?3Eqx--2O@+5>(tPhYBINb%ns1=LZ}7zlCEHci zmiUO~pJNYVR>ld)a(!WJ)DksZf{K3tu|qLCLJ~Q2UEGjS2k^pM=Zd7pwFS>Bcgehi zdP!d*6OzX7>gPsv^^X#Gj@?JZ`h-P_yy(nQV>Sz;!e~{2j$cwdCM2Nc=n|xq9FGYk^%k?)lob}7J2gkXf!`*> z7?(p5Ji2O*w{-USvi=^72|OD)V;|w>2dPVo6V9>nLA&P?pxwT;(KvHuOU7Kzu)rsg z>2F2w#ta+NMQgO-m_Wwow1SFW1>}Dm-cP0ec_8JFJ4-{z;C-f^N07TFSlm=?yAO}P zaPoRA?@Bzw)YYJeHWCx)=e`C+>NKuVVmRQsygh0Baqk5-9a`tW2o}ed)&Lg5qUnZl zbDIT=%a^a7w3k-L39P<^VCaghGctzFpN!61^N>Nk~|09Dp9M)DL}>AbsJ8)867vb+w3=ZSvB{3@o-@bYG?`K?2nx%4QGvEE=6 z1>xN=pYxysGcEt7(jayV;R)1O|AE1MBi*6*Z^=bD5?a2pYknOTQ`~KAXW#ZJc$OIIeykSt9|@_>GyIR9AO-*Z zi?HL%XaKe0KMICrPMG~AVHcMiGhA--{#@zMyliv1^ac+KnQ-2xaq?E5i)c$!?cyo1$i#R-%qcRaCBz2Mj(%y;t zB%|bw)5{3B@{yd$mD?oA4$320#anEZzcj%=8B-f@QwJnT`2YdIl_)Bxw!Di&SDjXI zvuLIv!Yim}Ni= z1UgyI-U&zE)idcf_rCc;B=T3s0fo<;DEvk~U|@Pi!NNkqT-EE_B?y^DYA#qo>c{@p zy&EkH&Gu=$**IyfX==UpRiVs{YSdd!k9ttIC52azbh=B$=%r>VsNU|+cXGAzRnUhw1&cWx*m)<|vHZ;m@FjOU-1EBb^A1At;?gon^y6 z%aTO{wI}VrEsulU zbXoQy>uVKV1;192T**`4z1&YLIWTD{!Fw_xgMl^L7@wbboA3NRt~=Yl_GhGjgPHr* z*2SoJACV>tk{`HrhRa8uLv`(()>|6Nh&jlJamNKm>#(6q6_5H(QX_-+ZZ&z*OTJy( zHd2MCruz@r>O;I4z;F$dAL$UQle-s41x!*Tbye~bByp>|Dr~L!x9rFg#h0Zt!Fo4@ z2RpsFs$>Fz_`Fis20f{QJ$>6$I&!XAbK7xVW=8EgK4-=YCCZ5i-H zXHQfRf2Lc%{Amx)=_qWsemcAioI@&aG-HB!^>R;>sq(U{KH>-Tt9UmefrvsrzEGR6bUH}3=DfOckS{S&02hXOZ#cz|c zHyLKmPKS6b<1BE&tjuFeADwvbymFnl!?}0m2wauiQ1z4SIVI4sRdS4|3QYr!DvDvG zr&DWT3PJg#IO3u7^r=nMgvYn!;fZV5i7j3RgGWLzPZQ3z*eBcc!t7LFRW&`1E(cyA zgc0za8L!cRwb+LtusIbeD_TA&KYIz&SFtUgYMDc>l^h4|!dIZmpF01u?ZQaJ=7Kj7 zj?Z{)4dWkm=Ek!)KrqxfPc`$XXV?)uIuDv|Swa>%;!&T$i4~MEccciiOsBC%{iP9B zTv%bxtLEk%-JgC4dbD+uAwIBd45ZqqI}HpXQj0U4b2ER<@ZiKHVgF{#-OpxJHxgO~ zomPFa_??NiOUSy6BDp;-|Ch~kh6qW5D!Q0rj7iVlSw+RNl&X=Bs2PA88Y(%(i;vn= z$?xfl6>rXx=9PIN8}qKpK0Z0CMH+G#?IH{0Q|4Lfh}3 zFB54~e|)QTxk`7QD*TP0oeCH!)1$)KQ~!hE`Ma?y6;od_G8lz(hv^fr^JosfjjWFg zc$hnVI$-$W&H!t01Ht`8%quwXQ6pUR9XXF07&FHpS@HjY6Urj@NjQW+k5UBh05TT< zHE{LRFF)l=I%;}^2Bm}FDbJ{V@-yQvemXJ9mGI}2Ed>rQt1oB4(P_VDi%g|=Z(vyC z1dK#AiM2#|ZtNI~a0Hb{_1~&|GOJIdN`|N*CLSu8ak0jXpUZk{Lthp>b+ouPs=iK{ zyR?$3S(Bc~^<7dI)LPzBLyoT49AXFD4Av>~hBtg^|AZS}c2eHEjk009E>*eu`!=y` z=ks~+u;tn?^;q_le@|hqhgj}kfef!?`)7a_yAj^58Xb+|0z)irPi^0;GkBH3$z}9U(Q?cD8_{`F{%rk(LF&uZDz?{L2a=ghX5v zgv4ns|JmD%p|MVg{{{nNh8?Uzd@+vk$XUTf zykG|TbRj7oSV}{FDlaGazhT*byL>ZgEb+t5*<(8innpf0Js^IK&Jf0!P^|Y>DlL8bvzB0u2@PS0Ri?*x5+1CtVPPD zJd){Qj@yb0wO1<@y}##XUI9x@P<_VGYi3&sc?t_pNJ+hB{MeYrG*`-n=p5~XJk#G9 zjRkh{eX6|mr(Q=_DpSf4Un>+$${gW#MoD(z*gNzAGWOQ!dmIHUf9Ayc8{6wF93H(70H{%@gF4ovGaIYAuQnn=B4JI zt_TZ*?&>=&?MXsjtGLVt!P(;pXqjd?%VCK;>}WA#x5qWj>~N<=lDsxIgRH+1KoeHP z+nHoZKW09Gp#JEOv91k)fo$jGjx_FNm zVvJl?>w)aO=0I3oG=@k#J8l|(5^Ie7CoGXG#CBB^AH5a8ZWn~=Wo=)ncWh2brd)#S zNi$5}_f#w2nCuMM*ZzR>s;21I&sN%bjg3Zl0BDU>C)WO!5VrPFyQSa{<2`e@e>w$b zfBtY*P(RsgHqjZK&9D8{fHS;czd}o_nbM2wd0Y~X61+iTo;}C`SX|R`HH|{*nzn~! z7r3G%xE-!vP?jJy-^$-Sns_~VQQO7L)!V1MW3|cV-FCGD!Lk_Y&Q|wzjnxdLF$c~$ zjToO+A*d?l1jNRbR{%f2nFp1rNoHBB-T!W_S?_(lrVsD#I!dOgdfiH)-?`K{_6u)q zg3~_jZL$p918E)m7nER8T=R6!pX0V%mfHdmxYfm!cAOOU*%lPaN(>pvt@C_>%4P?? zdoU5IP`^GkZrSGN+28MQj#2zaLm zSGiCqVY4WsG0*+N_C=vPi51LpN_aY^VaVcq>WxPCnnn>!76zeYChXGq(${A9+HD=A zj)cGPXrA2JG_knA^O)B}*R{YC_f4}PUK4Q^0lbPw8_%&I!?}tF;cfi%C@^_O|5}xEgqETTt&o*t z$zoc`TP`7g`UTQoQq?_*qCEZR_+dgg02}5*5J3#1qjnDUgJcw~X_;JZjS8U0xK^kB zJ4C0&H@8hSp=M=zi}Z9^>boRVja`Bv0MjmYfl?G?qJ3DP+v3%eM@Zm!1U*$e8C~9C z5bD6bgyXc|t*7xZ5{R)>!_U0=;=9OTP;(QwWS>voJ?&oy8R1oVo{G9MAoWX z1(#j7FHl})9-e?2%a^Rq6!~`4mAr(@Xm0Mlk`9@`DNc~3uWSMP{Uv8A23r#PwR+fThPq%O0log$FJw8Cr zg1X#a^j)9Q-ivw&@oICsR{3`BQZksl20TOcfSx}nQpnKQ{mo$XH>&q0I2XJD5m>C#ky! z7|a&s(U+q)bh=0fvvdpzQqNlxJA6(}GNr0`uB*AY0!@oEgYmXcO>FpOPz5&cUOC#e z1P4o1(Kw|a8K@s`d|bkkaJ#YALVFeIl_j^1^R6r*H!bo7*Ds*FhTWv=RI8u)j=4!5 z#eqr*%6C^gJ98C6=BN|h&PoK5%9I{+H!B>gy+^H!;qSVICxuS#P6v_>@8P<+XnBw; zh;m2S3=Rz%V5cm_B;vfrDI*JYi{)M_>pb@Aqo7t57Q5ISUjzPwY3K7=BiZa$`{}cT z&>(C+Mz{aiIxh>q{s(tU7%MLqgayKkU6+g<6+N4fr$a2e&D_3_e)y3mHslw~r8H*c zxZ{$EAas{!0sgy3wrTP8-D7_rSNsK(16c2In!QUrqO)qs=zBDZ zyH1@*N!!XUQr2MlR=j|>*YrevS9m*9#n(q|6z0OfYr&J#DOlV^?K1Fd>L{uQ%o z$8LJOcj`!;SQ`;pN*;O}SX)jQgQWEQ`2_nq`4d~1@-fst@P0BsVsH{{;T_|-fbUi+ zk_~#9%op)sJt?%H3<&%z0JqV0 zLJMUdL~=Se8l*`czkf{ihm++Uw@)R+Mnp$=fwsPy&2%j#^QU)22cq5;8<8_)K{Wcw z9Yw9jJre)ys6g4)a{YaELw8g`UZaC2nJU2^fwFs~<|0`4I7}m_$t31SS#IqAI@Djp7rG2Z?nu<7l#Qps^P@GylxQ+w$X0L^ zq~Y97a$xv*Y%~RL8IMGa`IdJgaxHMp^yp7xaHXZ8mAP`efE7>$zzIiq#s!>5oj7&R zg|X%Pz~zg!w01g4SKO6YOX8*&1>pi>BV7dp?vW%R%>hgU3PTAJv2!bYpY7JVz?W(u zH0|Ap4Hs1`859m#co=mtxZr!GhTjKng3i>X$S{>bu<2pR@T8E2sM~enEb)Fd*6#A+V=mfM7?$1PP$GIFYfyOJg_)?3@q z&uJxFfQLr@zg)Lh@^^Lyr)JuaNVx=!9U8nA2? z8nqL&gc`7cB&rf2^UK->{3+rWoXven(cm>c81nnr#J$PlN{Uv$s>ngc|G7>R#5$nS zGv_n=>*I~ph)?w}*eloTlGhKf(_?!x;teDBPeteFFKH_x%RlVC3ST>8=(y`EE)aYWhJOui@vk$571J~H20wbQ; z0^MKf!7mBLon95c*LnbV&sc>#LX+11NZ*JBSJyIBjV7$HyyDFchX{Nibbk8_SD4)9 z3uq$JEP>R#x5`8)LyndShMtfFnU$XJ&zwNFCUrJZjqdsvwa99$uVQaD-3F^GbxFhh zogBGW!OV6O$x7X7N+?R@o*dm7_+U1%Pv9^tRErTT`j!)0Y9J!+Pl5$8-Vcoeuud{^2 zDcKyH1a~+J3Tc#D62%D%yINE!{a?wO-t$JbDQiNZ{K3=0{i1THFG5rKGu{NB3jcJ6|zX^k?RXnLQntex;}Rc0P?c=iIsck+9;jvKf>XmV`y!M;{q0ZNGp4i#uGMA2Kk0w%PsYq)L?|uDmvI z+A$?Mk&Tz}M&M^y>;lzene_eIZDQHWRtt9lM^Ti2{Ge=58Y)}W6!8g@irHe1x4v)U zV`%2F)N?V>PluOgn5u#{Uw};}qanO*8q4>xiIE&LbhGb5>@}2~79MOLk4yQmxz$B_ zV$1R|U&2w8PGW@^Iba5XyPxxCvM}rr)vWJ38U<~nne(_5DAW=*HMJMcJ;a~Q2jeQ_ z;)7(T6FUP$rD|^?&yw8bMe}e78pxD8T|EX_X#t~fB4d`++&AqcG!^-pCS5bHn@Y7E z7|R%>%u*a9p}mg7pSK#E`~$A9G<+oAh(HC@xmdE~!o44DA9vs>>RX(zJgdDVu0nW? zcAitK&}j=+EBvwP$c2}k+nM8JCmYlhjxK#3-&Z><$%2EaPzURF+3~eM?c-z8XpE(I zVMORySSD}9&d>tuinY(^4Y99{&2Q7*!&!`YOHwH!Kz0VFX%Ro{>!muI8;ejgY=rgp z#$5lT$9=nz<=?@1FR~u&^U|*7hw_z53I3l4szOHouhKPC9VXUOv6AXDx-Kvj%46H_ ziA}ME`p6~nQ^Lpw${Bm9%!mG(wH+-H<839IwLeE3LE#4k!cifAfSFU-j!&(Qdf6ehYd1tMb2+dY%6_&j($iv{5DCk$uR3B*+dWfwm6wwww-l@gn@jEw%c|EQ2-c4~`(0&F%PF#Y*5a;V%mxe)XYMk^ zB3DQ$tjE#fBKQ3s{jha~XXB=ZIk&IS3R@w-GiByw>7{SV1SIIf+G765W5k-qc6%iP zksQRw;qA*tC;yeN5)uC)8k%^qg&eSGU`!A6#tb9)!n2RanxQcNU^8c)Z1V8y4G4x2 zi|F;&<0rV^&F`%;|RT^S%O7BAs?XMA%q!#FpEbqJkV&(UCdwdLjTQC1N>L#4VS z&a3`!=WLS^Y#n+TrSjP=Zo-PKlPvI1)X9E@ zP=v%q|BSjNtBTTa#Y`W=ef0+(Lil6V1PKzmHEDH`_{=xVco`V&- zue16hYi&3M2M5h7UJQ`R*W}5UYZsn94?-lrWbKkzpxYRO!foXV_Oas7(6YaD+vOvF zzR|x^O)ho?gXi#If8FIA)Zf82sU{eJCT z_P0Ok7~R+Y1JrcUTI1J0?xw1IUjOF0hiJ!j5pG=_U93V&=xmP$d_{Ila5t1%Gzt%- z$mt2Y>K!2f4Qt?xebVrjpst{F)qbGpd>f>7^GaZ;WZqp`)QxbOClvPO`T%_w*da;9 zNvz0X%Q$Z)e;t>bTY;^v)2!QXo14a(D@aPS^*Rm%0Eb9F|10C9SZn<&YyCJ#V^|8S z&2-l`t}{p&u^n|)60y(!!PlMxY?Z&SX%D_VaPiG6Pz;G*3Kx2n0>9EE$^L3l!mFen zWG9(aU0e7tH%{yz&2?Bw156R2M(U2aFmBp2og0+sMGuQ9Iif=Q(%?WHp_V@uYYd!# zeF-$+*=!H~S}0S1GyHFS_J;vjF(}VwrYKfPVdEZ|GY2^+TjRedBGh$bX@()I4(f*|=nvzHmO5|t;56Y%jLzmw zqM{A(TXvuUk3KM(^ME3%Ex*moMl4~{yQ079rW=W9k=|9Gg7bLs2q(^(; z@8MEw}{@?#|*8AP|<|?j9T#2(H0{OK^7&n#JA2;tnC$0s#Unwgk9* z_r4$Z{do1NYpPn#^qkXjy3fqSd;}@sVo_oN007+g$_knQ022J=a=}1(;mBN5<^cf6 zj~_p1zw_|$`1b9ay}iAhoSdtx>vwgb_8+Z5K|wXjTrVOp7#tfLI|ZaVj`4^J583z9 z1bes)OVWP+{Q0M&*0P3xv$ONMg^YlJz?dw<%kAH?(qA}J(sZi^z&T}BEgkK$va;0V z#1pXgq|BSBi13p{w~2{~gRgEs`g*VGGo75ARu>mf3S-u_gjPTD6%-Tv$Idu7Mq%yE)KW0ds^FnbR2ANEKZNVOcl1huCK2j9v+^Un5e6(8x|J!vaa7t zll!Na&6(P3KU0>++qcheuTHjRuZEio-3%hyS|AyxJ9A20M1miKRozP}r(x^A8_#YL zwS&;IIPcbp#fX+&--5oZnzrmyY&_&(?(p>I&adY63#+u@SBEK;QH@v_m~vJzsJYh8+csvV(7Qfv0s0J5;OecQx6XhTUwga`VJ2c z4sx0x=|$z6TU#^7H+fZcNhP(V_1}NaS4X5~M`afso_54mk4=bB%%9$+{MbA>Iayy{ zKR-L$*x2~BvvYZQxxc?ZFGe|kH}m}boH6j{=5b)*3;~0|?(XjXWApuq$=xv@U!ND3 z+1T1FEG!J}j3%Tc%s`=Hs>V`sQawxEolr<#Q(j_(U1@2_8y*GjH>4qqf5Ev)vZ79)YpcqDe+bJPk`-pgY#_HWXjwVAh4Qna?Sd03 zs#AlK3lhF~wYIhv_Z4RQ=(n}CrBydU%2FwCv7-yic~zb2+aSIX@rk)b`K>*@eSNgz zCh`_hj()*L4(`UEGwjpji`x4>2ZmNnH)y$srPQU2?DsVH)EB!{tG>jI0$3BIr2xM) zxLGFJxjwG6xsEAMiI|_PnCtzL+r6ZEbpCzw(b6|)FWF4jgH85YLL+Sm{>1Y(c8mW5 z8m$l^g)z>%?|I6UfIqJv^Z@|IH}4f>wLhEwS#NhW)FAHL!7+WUnn8x&hy42c#}(>f zas~yar!oKY6Zn>RefRB_s^57x+e%ykea6;gn!jfdk>w+p+wPa~)sv5Ga5x?k5EaH< zanTm(M-Ax1f($zS5;K*roWuY)6^hpeFq30^s$^iqCK|+pFa48k?sRR&OT9TKU=DjFNgmK zkb0IMxD$+a-}OXX=9BSvz+M5s;_|jKmKE_f*#&U zL6895fdwtaEPo9cW3&N@LcctRX-NF&wp2v`g+{8M;4u+{|9>1nEgM%$7~qm0`+ zFzfLTFVgMwMc9{_Bly8jMZrA0rrviVq-*lv5)>m(Ri+%cHjy(>2 zbua4@8UVCg1blklYQgac2yv08KRsr$vNZpS0&d7!t_GFj@FN4TVR!;597tS`>_y%H z^Sy!Ll`nS(Q2P@f5lIlh9BuOi)+AzQeAXf|dS^gH&3nTo5X6EB6ZZGf%Fwp+@$?n} z@P@lw(dEw*K*lH7s0yiO|DwE8UBozaM|#l>T4;!-^ry1hsm6qEG8+&IiA)>7&;el8 zF7{9AG2hOhcmUX0TXbc`r(A>vI^49L{kXayR9d5NvAVLsVN3DFz~c2Yae8_rMq0mW zW4yss**$9#Iod-@dz~#PeN~rV99L<@bF<@JY(&UX(MOvGmx(4FdB{jp&Avaa#2hPi zPs$1b3Vl4uVCqqL1GDL;I%UrncjJh&KGPffw|~~LA135owHaxPf>OgDz$6Ili@WYS z`&MH(i4-oe=IwW-i92ihEY@Bko#~vXK(Ng7G>E2}7XuYQPKxgTWfL{T2ZTV!cUp8vG)G}_!vUG>^5J`Yz!Cq&F^d-L zdKm;c&G$_nsWy}}cF|DPK3E6OI#eL%TGzjZr%bE_Wl<}!%D;xaYA^ncs}3VayeWpo zfgJG|dI{~+r}iKL#=Y>_QJ$wUI>z{fHCnd4h}q7(+fF`@0ocIj=h#|aVC^lQuLXSc z8X{*(PLm_XjZ_kcah?|)A}|co=@v^qVf#r`qAomtEO@|(BX^T3DQ@dP9=*%^2c3w_ z$R45{1y`8u@6X=H`v(BwaTO=MMfWS*q+FNlgTAE;%@{03Ys!F`ixXo_(wI{q;U0#%rFi zN$LRc&z27RhhtDJ9T2LzeaIQ@GS7UnB%~toFx6ys!^TK*-ne=*3Gsl*xORLmV4-O* z?pE{9c1USV!hY}?bf>LGR4&C;zKCz7_q%0_YxB0NBLzO$8g`03ShqMQ-=JMj&NyG^ zg9}qfbAGiLh#eE>(goQ0n4T0823;3xH@De&RXo-B!DQ@EC^94U<_euyaUAJb*1lc6 z2M!OTtD())RMP>swvM*HyWO2P4>aAszUck&xCNp!`TCtWL2#wQZ5|sY4 zF{8R}PTqI%$nu~x!YzKT&H9^1Wv(^dn8{bb@nIo_uEEJ$Omfw{cIAwheIXSOYu>U5 zCks~>ODE2cJe=m*WB%;!rBL$)O_l|`ED;forlU)Qkq5o*ARUn1 zec*hH2P`^VA;5dHpr%UvqEX2f;Lp^`3@Bs&gwz*DTkLk zOaMA$<#ao!FI9XtIV|F7fZStN6nO!w*#uT~3-Z3*S$GTNv~G65XFyMK{1vBxLx{M(9XiZOt4GywIAAVWa zi&`ui_)*5oGx9CZ=pR)Lf3gR3Q_%#zOZ-O_c=&6tH0_qLI5$szibgDTjAQVw!c&VF zoDC*3VMpa|L`OuHJD8D>1x~x?dzW0b(WQc5R)$a=Y*8&qsNPkx<}V!KTNx>8-N3l@ z(0{BAPBlK&fwpZp60a%txGMp_rR4 zl{M|icExKp=@#$ z7$zGpv4NS#0R9h2CXK*`^LYO;Z*``_DY4%kdf9CqaH@Hg%U1BTBU9ex)xN^wV=FW9 z+QCrwzHfGL_@l;INe?wgMjIW_b+dm(R5MJ!VzThAPQkv)`iq=Mx^huYl1U%`wrn)T z)2fNBfM5whH~e~i`mWDGm>zgRB`<(Ji}b&M2=IRsKk5Z6bGi9`QkZ<550C-3ISNZf zsc&c-F0=j4wmp8AQBRlCYvB84fDy8XyCwaGIL87KC`(vzd!Wzx)OjDT5n=YUX92nw zEPgJDkOK?X@?6+`nLa4!63VxYq3-?d$7rLUQ!WkCI*?~>cij0dRrMv^!i9CKo>QTu z?2DdJlx?yah%J<06Hoa_7{njs(C{RYu;m*4X}JE3+>Dw}l63gy?$>7F(W9ubUTc>R z*mfB|Ugq+ZbZ4k#S1GC-JfYy=;rQK%U0w(SD3C$%JKxq7@}UHWQMRAlv~JZpFKtz} zr9`^qSN?938s#kA9-qV%^x5&#sD?68;CZeddGhY$=9SJhYwt`Ny?J-=L2Ra)e0&K^S9&jn-f+9@bHgVH z7syx@?%@vp6o;Os5DlvBGTj*}cCGuMAYtk`Cjvg$;A!Az=qb`_IUF)*Nl?lhy-p}7 z6ALF3V<~iG&4Ai((IE~fO~OyfpjfWwA+Y~}=%-9cU^x;1U;$7Js|=*3OQB^E9YkAg zGK8r^T$_`8Rg^9XsQtkoQ2~H(fc@rDZz}yi-;bgEfwXgFj5J5eO2E0~1aRs9LRJ5p z1?N>dW5qzxAZ}GIqe}tJcZKTVl;Z5Mgn#LN7~|&L7!3d6&zl#{%c%RX~ z^kXEs{`IOcA}WpVO_~`1$9BEn;L}hWA?*rVq@MG7F&Gp~i*L}Oq5iDl zDMkO)+LziaqkovRlu$wezm87T&1KVRR9abtGd^llnPu-ap*#%(>hZ@xjC0`*lTb)6 zP`f%P?sowWAEk{Uk;dAT^?dS&`6I0TFuFZCH37Aiic{Jhe$&)mxhD*4p1+m6KAY=?2ZEr7U-6d$PrC!Tdg8_ zqZHa#pStCH6lH`pY3XmM7vmvG1O=T=^fmDPxlRkK`_C~y)$qlQBg?&9UX3v3$<-%J zVnSQw>X4FN?zsmVnd4l-lWl#_0$%ikwQi~4umhiuVLZ?-LJ)7d9;ocI8D2GxA&{S$ zChSNADK4}2{v#jPTCsu2^13ao&%!SPyTc6q2vi1_7{C+4s>{%2HuKeJpGYMi4CFL?wdrx2>UqT5^g8%;$Cs_D2C4vlBTctBQ$L~r z3(I)z&!SBxHyjl(ri#Pr++wmW3ZJ)!UujiqAo$?G~u@D;P< zrd*ZHaDJukmPibYjG@Xpf>$}ZQ8Mb=Z(8|KN{f$!Qe=Q31ta;XIRz}K1+E_t{83KN z>ciPL(eb73E^qogdbUgO^W7uVlJMS>B$8R?rg@eSRKeMk&$#?MZs*>Yl{m7~n6QHU z%eKR&PwKj3k_GQ}!yugD1ThP;C>dUNjq&(~c%D*j~rqXt~dh=ZMs~#TWPsiuz9@ey?XeUu?gT!ot2y z$1hw{ldY7@*49=x20k=3HQ>kekcZH5y0kl5wZb}jE;eQI8XzcxFJu3gxr5`&h9_ z3tRJ1Il85L$B~zIpCI~-ZV(ihG+kFq%{}RA_NY~EiN9ulixdq$!1zmLR3^St_V$Q< zXZ?G*L+7acy@A&a$D^xY4mVDz9e#Z&?O2Zz`YM{nhl}tlp4U=YkrhHI2?S9|7i7W2 zDW`K>I(}h8|90<--Bp7%>5>aRQ&*+Jmm|SX%|mhNgW>)6Q!c)ixA8NeD{mEPvkik> zJj&eYjdeAlh(7QiJxx+x$qIzd~dJhgDDso zx3}`usbAY%;F`^UJ{QQ$zlcxZF5QG(N_Sqlkv!s$K7?p8U>P)9R3%&CNx$kXaoIx^ zI5Lf&^^NC1lq1AUyvbg_F1!J zi=JOx+lVRR^>xNY#RU0`DP#%c-&IN>M?B{fuH?|$Vn`#YiXA1(=~ko#VhDF*_*V5h zIimCRRnA!lc#Y#xSRqSXuNR5s`o=4!8;*$(J&hP$elI=w5Chlx?QQ3W&=(bizdq{y z(`OwBx3BhgPNt>fVFcKMrHCoQ&+-x zUo*SGV;fzL?|G4qhHlRNr8148IjHn@&rub&xX9BU7W32vQXx9jtMo)pZBr4tMITov zh7}N*qeG{k=ud}-6+rk2wWMK6G1T{dQOZgj6=N-lj!h4Z@*GZ$pj$TVPUY?qVJf2l zsB*9+oSvAEOIhx`A^O3_oGyKHB?4=s&BzaZ+~?p3L~F*42(T+Si+EtZ2fcS6ZTXt2 z0<~&~OD&zNR!wF+rRJE&U$1MbG?bO#S^RU4*fP0l)2?}pq5)E5B8qpY6PemGL+#cBW(ng`XpBb zR7o<0%sQ{Xyv3=~N1ui&|v&OKKNXAP~q zxmPQm`z|^7nc{RvVSO5X3{vRZ;_=h!kJ)bbx4WGfXw^w4W(m(__%+~OF`A`NYm|xC z@8LIjh->NRkf|g*i`khO*UZ~^OAPyChCE?}RR&A&QX{!m`zR-NLjAQvC9aR=3PgAo zCkUWqM2pF>2BQ5khS z^0fumI@x-5tc6O=3o8^aoX%b*1`E=ZrZP-g&hYIEoim!d6~P7ihu3Q{Gu@&)wLGSv z&-lwsUcX?b3RCDA<)80mZd0sPn)?;1YW-gD?3r07nc3V@KU``_SU@p)zBHVdQUVBl zc`;E)bQ#dIWhzCei0(H)O5C8IsKZ$?x2tNu`%r*v71>mBaR*+)Ld-Niv?GH&a_3 z-3UfcOKykOouBaa3AiRvzS&?C}Z>}tE% zN(=?wMXFLGABP98swM>egchR&UOs*jB~gkbrGXV3EPgE3P(c5mmD_E<215CcWd1`Y zh|s{kfeTS2^_;lvNS~`dG_yv9a*vC#y)@$+YbNScs}$&egT8Di_|JA9eQFgk5OS!o z?X2lOep_STsZDJ0A^GC>(H--Z$Ln}}TS=9lSi>HQi&YG#+(W|dSlF*D2rkPp2Ws=e z94AeQ<#$cb^=T-2$>xxSicyqAW()+Y!u>42yBWLEz6UF% zsA>=}80!%T+TZ0%6~hk1adtCGzxt)vlKT`Opw5zAWfXGS+eV7f&aXR2WUy$4I#A;p zQ|Mj-4YOFhD_$Y)Ix>TNq(T_%Ik#5(_w67`P(>ULF#3Wmn&edzX$>iX9J&;^#m3Rm$5Nge)^_RTH1WCY zxr&?5aIx?~wE8>aF<8>l9p z>gi8>lUIt=VRr?gNtNkiS!CD@7JR%swDUzr0XjQB zP+-l$Ll_X~b`8rZHLkg0W?@^7UXqNJd)1*3QBYc>+@apW*B6D%#i8UDvE=W z8sXSj#^^@A6<<4^Bl+8EV)pbysOG=N9?|~0vYAK~$8HO@*A#4==bkx^$zQ0?+H(li z{q7p+sS9uwC5?v9X5clb-31kw8383{7u&`*u)KcQ+7i)A>K|NuKJaXSZ|7Iq@ko>g z15?LLPvv~I)V)b&XL{XREmfeweh6cSvRkH0)1FMoUz?3p-JY)CgiF{=LCZj=0D}6@ zZ(2Tt-^le`bf$E_&5kLnl869NLm&!D^J;Z|-2DEe|C`6=UyOc!^J%VEQN?%W^ZUs| ziMeHQ$h#lOfZ5KSEr9j*M4t18OITd5Rn@Rb1YeJk>(FWF=SH-4_4M;%z0{kO{Gg}q z*!xw-i)Pn@$$z3iLqRbM8~Anf{5ig9(ANZU;4?{^sBI6s(1*e_QmjSCXPP6zc=tS7LW2hpcwFx`f{GzUDW zEQjbZy1@JV1TWPR1UroOTv&uw(28cN#D{a3k!y4|xtwYt{%PsRbCsc?!~gv63E!Ju zO(aR-E=R-!W`X#%y}RDkt@(P~j${Y5$hc3&tEX%aaG$c$qqx(=ok@LiYUb?+y0e~c zVcye}p;e7`V*N4HT)2|@T>DT74!_~`pDk=lpI-S6tA@GD9;vIl1M9e-y-__e0oxFX zQnP{|8&X|%Vd>uIi&x$kjNLdUM%Utxqlzs78a~f6u$171)!6f|unW)3t2p`SGvIa6 zY)992X>CZ~S>Ohj?&PV$S*o)z7bt>-rF{sqmkHEqY-Zir*J3uo`IR}g)2HDj_zNr6 zd=NEuqBkWMa{`qo;2-%EULtErXOSnXkGi#;7c|B`r{hqzEj>m=)FB5=$BN^>a00n# zKDqmv-;!BkEoVuhZkT*6`bPGK-WpE^1wH5s9=~4iR<7Zx)3bNkpw0%Lj|V`j7i;hO z(1`P+rZAyGuVIF^a!koMyILJ?2A z&_Mfp?K-WaQk z!L3cjf74q>?I(s2Cz5A9SyEPV^Z8%4G69dY;bW9i+dZeSdsp7;g4jg3#4xjB)o zM7jRUH-+vf{yqR1o4G;{Y#=qA_lc7>Zxy^gK| zmob)Ax8GR#)+UGdj;6QdEIAWZ%&W=wq};h;4G~vMX*I5^9p00it8hn(#ZN#O2DwHZ zG7aoMCH!JOG(q+MRCbg{b!wU%0KvdVK(|hPbMr?Wb~!rnRqHRcza)O{zB(hgyVL#5 zGrvfeA@E2(a#N;02+cf7BQK3sGEd{i3)cvOoUY8qu8R_n?sOl0C(FOa!?a*+v&f^= zSs+ZFpiBJP@be1B_w)KWU9T<0D;qo?>bEkGyS<3YnHR@HF=>kQnD=&5DHGM?HTXUB zt?d63K{KITaH&wtru3@mE_{|V*qo;-O$6LLLV?AHj2&cfvkKBmMZ;btz-lT-h%Pj^ z6%Sy*ctv*5H5b$RoJV;HPZ`snej)&a|?S7bn%I2OD5HeP?llqtJ+48xU+;YSosqn0o?1Vq$2LMpQ1<}PiI#E zb;He%xHm@7`B**NAXIEb_Nsic&H57MJb{Ci$ERu15WanxiZniFEt|;bNRzIB0(=2Q z6B`3}hxy!QxiqtFN@ zLM0IAn?Ld~*stPM)&9$8b@o>`3c$gQ9>&YWZ`ks1Y2E|xy#(bvF&||%1WKbF*i7I6 zFCWBK`W=L1U-b+~D;Z|vf}Jd=$$i1>L-WG`$VE3|1N$sgd6ei}7vHcxS`XdJ_c8aA zR!>vdcQSC{bCn&>2ThB>u*S3>`X)1XxBC}))utjH=0pED_%??1fW*xQF7CsEJRQ|w z_saPb3W9%-l!B*KH>_{&$$goH3%fkkdu7gdqu*aJHeN5I{}3!fhEB-3Jl=#9e+!1l z9ddvL#yfC6dpF@iKfsLFT^O|bMuvM7T6T0`T;|43h&`9taehl7OvJJ8E2C^pX_?@{ z73^K=H)C%IcjsO|#=N~{hd1aWE@{9MNPixlX-%L_X+#c#(M=DpHhZuhi8A20evt5x zoOXrG;PZnh*f=UeY*DQy_ouI6Wyt0I!W}#O74Kv$71+$O+RZhb8~w+~{2itq?C-Yh zEpwpKh@mfo->gFvjR8oizC}U6?+OK;FfUurAvC<>n@~hh^xhy;)_~ z`t@qFa?|ZAC_D7KGtS2ZIG>yIx}_lu|BBIwrcX_dN4xI4XdZ9uSeL{+J;6CDt{(`v zmZ$@{?tQGvBY~%XN>nx}o<|?z_X!8ZX2#JbPcZD5C$SqN@+_io6t%lw z67wsiBwGSgG6hbSoROod?}6gS1USP|dQ)9px#RL5?RrzJY>UaS`lfbx%?@<>e+m0R*w?4xu4;qSmHA}`0hNPJWloRY6AZ1{GokW;h%*F3M{ zT-Z>2u8Lc-d^?CdkLCy@BL8o*-vOqA3DFfuu#%bYREA31tq9M|s3DQ7pEJlx|DtyE zqs8>|F`v@m>P|(?3s{yK0;|_B!Oj`pL(%?!3I5-?k3eUsEk745RQ&z&=MCWfJCH)X IoO#%P0p~E6)Bpeg literal 0 HcmV?d00001 diff --git a/en/book/images/reset-path2.png b/en/book/images/reset-path2.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd5ed573e608733e2a8a5b2de98ff1707627955 GIT binary patch literal 9801 zcmaKRbx>Tvv+g3nU4kwa+$9O_?!g^`J3$tAhhV`yu($-bus9^R?BcpufW<=~!Qt|| z_x|zfRlRqzUK%O#BB8MO-XOEC2w2tE?oa4FDiry)-urloyTEU&=xN z0QvEQny!3KPL7O>Ol@s#jjMiOV4zcef}NdRVPSrug&4LKIj-Kwg zB>h&R*JW;4er{G#QPEjL_GMe~iM90D*jRjg-15@mv>aov5aqJ=yML7_uCA`XYjU%) zvd(tb^78WjZY~|KE&VxlJLzQ)BpEO7`o_*jA0Hl|2j_{+^TV6R z;kn^6e@2#9SD^o(8cMo?fce}LGw5EZE7rtI%8ypgpkQ`6Nz&biTHPT*E(OU6iwY3`x zNsagfg+VK!J)G=pNhJxxqa(CHN-0IDnAn(sr9K%G3z_#!;YD=?-wK3;g;O(A->Dmb z!QjjsS2}J%PH~k^2&B5Ys(+@med7m^N68^A0T~IImxfe8ko$$8!JR>6N1xo>TyRJK z$G~h#JRERIil3t{A)R2Bm$^?=QgwZJW!ErlsMXd|#m7Y4!t!J30N61oL_?Y1z&jKN z2S2l~p|&BTb08YTo@xbyO$Ap=@lQt~nOpYo#|u9Lt1CgS1pN@Pk*5*4E2hura8f>G z#*il5L_4ED_pM&B zaSpS}?eqn;6v6{}&U&ulvw;nLCCi;sbhd((lfQyBm8c~HhUlicb{>xhL(qY;ARO3+ z!mc{5hY#w|`8`7fm5P+QE0)|5hs@Od3?>LFc5h=~jN{>}<0zLsi@_z(b(WO8gI_Wr8#*K`_^G&o&2rrH?fCkQXti0U~n(1@}&h!aK4<*n6H2ZYs{#ghF?BO4(XEGx|r_-`+Uu4FRoA-dw^4;!B^3AfP1B=H}_*sa1DsuX#`P3L!Wm zipq(DOc(GWt?b4y{7YScm#)Ypcj_moQ65MPt{i~1rQw-&aJzdY43MLxxp)XY0B{1& z<0Q!Gis`esJ>w+$kL6QtlU|+*(Mb&NB}px%0>I4nF%YWnI}tC2HZb8s*rCtq$p{TS zBystm`J%J9v(qK-P@Z30ct=PCg~S}i!VLKoVkvC-HsR;YNy} z?9MELw}R6qhv-sQ(xD1a^AgL7kR>FTnJlifCPgUiBj9^m9wBJq;}+p7w>qplN(15l z5CqnEIN>CNU~_#4$&>|63qDz2_BbgaxZU%80H%6woiScs14C^v{6H3a>#pmTfxz;W zrtEwBQVuc;mkwz5{b>fuR@e1n(bY_T*Tv!Fu#?s8?!Zy$^OEmS^@nZ=nub`52FBG- zo~@<3Apul(EZZw-jct@)8?rT)RI5Y(X@etO+Kh4f2v+lWpKq6Z<(>yMfTg@IZzK{| z{OvPw6~c(v(Jwt6UkZu^c}>t`Nn+#ThNTZwq>Yu>ei{)>LL<21B2`6f#J zCDOwP%LC&!&v^E|;p~2={i#`!P&6*@PUJO~>k?eNB+X-kl{R}AA=^d$ z8gIP|H2sSK$Ztr1j%lUAdKEB(5BK$3dcHAdyvfYdcPg&$TfBbwRq!J;RWt$-ZO*P~ z8&S+B@|t6>65>kmUcn-Bd`5!|gQ|3?7oTiNB`OKFH+bE)O7EVStl{g_y_(4;GlFR5 z;&^A=K!utDOKn(FNYY^uNyVTomE~IG>Dt@$39cm$*Xc)mKUNk0Ed(rBtj`j{O~i}4 zM-ream@Q5dfJk0ORq;YdW^H8X7!u*+Eroq~=szN1m-b!u1cVABlV@#ln5DiZ&K<&5 zgNQ-H`{XKK5o2eAIPB8R$xZDa(Xgg5cPw(V0EFlvlHzCBT*_2*nORg6hD*7c9uk`kCcbd!Rq z%$hwG@2Y|)viaRb;IK9Sd!Y^n7TQ}}lN-%=3g3~XJWqsFXm4hAyWV(oLR$htVYj3w z7vFc+U?vav-NRl&=e!JM150CNxXPeFXos5}>eOfEpfKd2O#8|NE=F(m7aFcn>1kL^ zqiRyhWf!QEOF2cHMj24(>MUYuTTdtAc7As7XXqFgaZ~WWJ`qA&un|(|5V0Ct;`>^J zRD*Js*7?c0rZce#`N+k+_8A8(iQDu$<_bs^Y^wc?|7>pLFyI`M=C_Of-ZIBY?!Iy8K*MshhsSlV?K$UU-wa;epCX zVIkMcJ;lj9r-ZD<&*uST#L)2Mu;j2OlUE?r|Hczip`w)U=LI{`u>G+`Z*igk7iWDo_2aD$dyq%o`OZj7qZDAPUTCor(=WAeNE_3yV9mimXaU+p^uhc9O)0OexbgB z9KdQ5H2fC>N(}DcV&bNL>p5~{<-Q%BGufKZB8gml(Pt$Ft>v5yPA=KS@G zS=oBzx7;cv3+tLtG7acY?@iii*psv|2;N&ws|@o`581~rjV{2sdok#YBCE_oHL=2& zXzYB~6-#7lUXK|ebZiVzv@6sr zSsps(lN%7PppuJsXB|DjSSFktp4}uXZQ5*qST|#v%{K;?r$oJu9wn;H0C0+3=!_}Q@6t+7D*3h=^48r+5n=_R3G zut)<$`o9r;i&W@92`1_^FWD}7PD*`;1c3ayTR5`eSRZww+#KocyVz;yW_xbYHAnX= z?(#X-0k=7KF9ewNUQa*weH{PW*4z0kXu)RB9CUig2fwC4q|Jq>d?mwA{Nyh{zRv*C z#6JyT)}pc-`Skw5Ra<4AIlp>nRnFHA@BTO4?tDzZzTVEPLD^8c5HcW`eNJuTBw4%^ z9x@6O)mwyCCh0h{jKz?-ELC?mbl}`i*lMYfoxo0N9;YcgeRc!QrVRrBF3V z_U_K~0AXG&!4qFfi^*h^8|~t=Aav*7``5$r-2IApBQ2%ktBJpY&g~ zaHCcQX_zfDXKzH3Mi&M+4Nxtl37OE zpJTji^8bO<^ArtG2MHi01z<`aaGEyH`$?+{D;VSsm#%k zpo4Xx%%V3~qz-fTbY>#6smY+SH^4(B#s8xV`5zU2i%m)mFG-Y^iLwYby_$b*J~N}z zSqc*N(#Hd*AGSC{fnIZE9ZF83qS%5T-H92#$F7I_>AMSU9(a}e%7je^y8w2H2xgU~ za}5i}RrWomcoN;fbP9YqpFOG44Y^QM@1inmt!NDGn*A{**GoTX+jT$UZuH@7xJ%;& zIPI_6CY~M(f3^9Ze4XX*dK@o-OR#&eK|8}weTUA^6fzC#n=CMMrc$Oy|LpLWVSN+Jc1T$=4ma1VfDkx+U9Co>evpEV8?T3cT)B9DZ&X6qIGhnA34H{ z)oiPp+>iW|ilv2s%6e!uwJy`$PQ5Xe2tBHC#ffmVxv|hmeqj~elpWJz0d_yHL(Ap6 zN#L-;R9$BrfCiPE-67}r!ixIChy8aecDIKM+dmo;ww zM^prpG*))($1HtjlyN+cS)GrItE_=Bbf2HH|2<&b zGFYx-2DhK&hpcPt#wh7*xv$`DY+xJ3SIjn$aFm|JN7BveA_aU){1cYjS$lvX?!T@0 zuox=UK-rx@D90S4Nzn>~uq0y_*1QH!*xG)XV9;ygxUf`>p3cp1U@a-0Jr(`?Fi1~N;kPo8cqj^c~mCL#;O@53N!C?(@&ueWa(_DffQX2JX zm#EzX2cGgJhQyleZoSYqdkaTR*${K=ixDQX%|c#|zp8u5Q_u|!KMt)$v2{8NVvZEU zap)`8IHCS7NPnyvNTAu5MlB|}dmw|%)`{L*aMD22npi?YyUZNt4>5n&mpyOg(?W(H`#1@1yDE~?^s^#I zH%2z&ioDO0Y(x9hv4RcxynH9Us0=Rj9Mdr?9vs+7on)?=k0)6W3gwp;RiG#SkP&l4 zPvecP(|x`l{qup|Eo-QsU!4DW-%S^zo|7Q{l8!u4krLqW+n$!aa2S;_Oua>cb8S9nxPkR~*`#MbnmZP|7f$2Ye zWe^=>;G+0lVawyf(Wm1Ry0#}zQ4V^2gc?y)&_B?EhZ%KZ-^|4 z(6}YS^Dg+Ph%uHMdd?heP8a=Df%%xkDkdaqNE)T`G3Zz(R8cM%Jq8n8TLJZtvCL~g z)RMFS@4k^DMA~m-O(=Ft=jUec{-{2J=amsB;*Ye>YxcXNYPJZy^67^gf$5U5t%~WIGt;rolFrZj zh{q#XPtY+=d$^#re-95A@`@y%&OtOuIdUDzGl$%I=}boq_@08roZ4jfO7v>yr5bZ| z27eiT)aGxi2?+`B9tbo%;_OsfXeuU9J@KAxb)=^^RI(6`=Wwl-v{(3kqgR@X{mNwC zY$kv==g86c2WD+KW`_qOi@C1+HMX|xA$G%^mxAA{ z8Fv}GhxRo>wkY-!CODKVRE`!>EF7vCw9>DLwgI5ZIB^!gm}dpGBSr&kW?``$7C4m=HfVcw<76SN09OyxrFN6TqP& z;ngt&p@t0#PYvysebK1i2-Q`B!)P{N{7J1?b7o2RL!Ezq#0Wy}JMgcAe5my?Va0Zm zt9(vweD#!ji%xz&6gJ;}7>|vA6xRb)ObRv}H;ytFynQEkq|E&#E>!VhIeN}TTaq(V z#b0tKMMiRg@DG#oJDzbw+XnQ}hAqRfwwuRH% z*Ef*}f5vQ-PWytdV&#v*WwkZy_cKLiC)TCYUha1on7NRy^tJ4S-o9+ole03)_ZPl0 zww@Jy+&&bvO;mTRr}x@_#7uon{O7|xL&#cFd^vG6@o%6@jz?{`u55_rXRIsS@$%lX z;48y>qG>JeE4~g=mbWT}B@x*w9j8zaeXvOF#7v@0$J=oZq#6N;79vYUJQ5NAsXu2e z1mTy_#*_!!IBaScI0@rd<%5_csSkN<5xl!iv_BRBY%E}NI0mepWfd(PCCf&?_VPie z=AOWZ&5G(CaAyuoi`6_R#-icAj;(u6|~uK^0SJs@AwE6#F--N zFF&-sC;tJ>l*?v9D8q5`co4H{gRAT-&G)kH-`)5E&%M@t!gIbD#_u=WeyPp?Af{a6 z;<&#Zl3jgs$?T-N7PYk;0J(-;sn7XB5Jf$5j8fj9gsxYCWZ-DYa_3Pr?e9oUjf6N= z1jx)~x&4GBb{IsQ+>>=NBpMVs>JHiCBE*EvQQMJX96|+4pTagTN;(ji9s66^&KH^$ z-`S*A2L^xYVt>5F`Ui@rL{$^=fUwL{yYAkivp=og12TbA0f`cm?_*H5Yyi6NKLbmj zU1c%D&f`FVx`p#@uv5PCGsiK&)}HX8;2rzaPAp;C=MN$&v-83t)|C+5<`Ra?Y3pIr zQh}`XIzpSkGF}Uxldt98taw|E7K0lWTLStxRp(& z)56SFjrm#S39%Pcy$RS^V^(FH98R?xcS_jy%sKsHy4Hm;lSZCXq=eSOV~2{o>OE`t zJU|65M}5dDf`rrPA{tZdDk3=~OwLuZ%-w$AP3lb<2@IPXE z`@GOcJAeqIDMgL)5}|Hh$GbMz{ml+{XNs9+M1~=W`(~0*MOwd(pJCEJ+gu10VJUrQ zEcWdYP7yHwN|9Qm*u=Ku{Z63Z(n;--E#ZzUo7-jvYURUA9XWBvrT#MBC;443eDm{y zVy*o@@uY(BfbQP42kSp5W^Sgf=)VdAjUxUnPQ5y+yGeZZ#CR09eSEYzy1PBCk>AN?MWLQK zi(FA(RtXrBJe*dpj zhB>%<6xg_hh4QB4yhQvQ>VY4@Eg^#r!p*uiQ<3$#qQHXf<;*TlP7szyYQLd_E_<^( z)QE?Hikn3h)rc4zIGhZmj_Upp@dYYQNP`lS&eY9G0=mvfKvj^Pz_4YwDz-W(w%PI{ z!3+4(h_p*@M#zeANmWAL9k>BFQ-ZFa04V4i9uIFwKr>mtDf$d>b}5J>gujj<5rU4Z|MKB%!p-{654iVYDE ziAM_V^#lC5<^@8&>pb&%H8gCe?ya;yCH*foJ6JZ4$;JDR5ylh#H0Y`x;sLALvD1RI zS#N04i@OR<)LrVH`e;0#PNjj6=VJIj!Cs2R(%tDU0;qWEzDJ%0t1{bqtn5xWe(&I*vEo+a5%1AyhSp89=8(E@CPE?WHSxthp=|co;dJr}aCUQh zIu>mm3twHq?5t&THMPwkBSQBQ^t?2Ywb4My2}*u$%r{97`h%wSpFGr!z=-7MK=S9!&}dolojT}I^PIuymDMO&Kv3oC{SkO-a{Tv<;_hW_ zulJ+F@^WmL#OHaa>Y(Y*JjU!2!(%^9XT-MmHxf9kq6#Y&&P6+g#7F4tBwM{41-~E5 zZ_xC~5R`C`q0Mx8x9P6Ng>K?xq$bvZjBAEt#LHJ+cffuODAS4fRB!D3MtSfP{ zkHpnc*zMKc`N(~1%+po*?(kegtK)CKFZW{9>bTVnLj@8h_cXf*;{WVqqLg6H9%+rvXw8Q-Fk1bWhr|I9C8t2LoK%UB0Kkd5Cn#D=_eZuS!S znt<0K{d^DE=(Rj>SCH*XO*n&p0}n}7YT6z<SYvoMnVWLmqR5Hx}bm8ICGHFMu3pvd14u?g#Jbz8*3-m1TZ3+hJ7oR8)|Ue;OROF;&}W%HJ7Ub}^D*x5Elg8X&V3iLHu&1q z2o*;fEEY-XB*0qqVe>`ht4Y3ii0b?|s&%g+YCTE4sXZ+A`@I4L1yzNTuj8USJG!0E z^KAqrvra&p4X6YE@rcWX}ba4=IAe6UL{hL_qYkZDk?p@@6xP z2~WD&^1?TG@rPu=(6gQT??c_!9~rCks`TU(K`(N1l~(#jL;?sS{2zH#rS6#r5DZEI z%mkc^_xi7)Wxdc3C>&^_hFgs^%(=fgyYmkPSS5Ia(MOQyBCX+S27GBpaW0%2NK=M# z&pszr?~LDk-gT$X=zTdBlK=4~Ie}8w*cVOoyR}uf=;pze{cY&B4@j_Cu9>Hd3OO*u zx3p9+rK|MP|H@g32qc}2YDNT7hBE!XJAu}TCNYJ4Q)7o^HO=8c)8up5cfM1vB^&0D z)+{NWuyk8>D*z>Kyyc}n=qIlpyZ&KB{R@@G@40QS4wr-WdDo-0bETd_{&^uDfdu$d zU&FU#K}+6+rM_)u_J^uOS1wQG*^}D`&@SLsTny!?q}(UxWa9vXQP}2{{8*m3-v~0a zNFjxJZf7zN4oBiZy!(jy7|{uzRjx&}`&JroBHBAR5cnV$>1%^tS$pZ{Befg_Ekl=9 z?l{jn0hLx{!{g#gYxyq#%V%B(S@c3(5ysk@Q6p!AQ)9KBvq!_G|6tLkI0<_O1N5q zUBwM`hjVso#Q;@Yln#{6AVIJ_fL}2`F5mx{0P#6X4L*2JSvZ=Lx z*$=f6a+U4tjPc0Kw(tDHY-Acz`ql#Wcin?uK-%g5g{vI!-ow1 zoGKz*2`uZ&B~!+Mfma(^zn`e@h_n8Xf}C^!e8JctXQl3&Xhn{0BR2eGHJ4Vp75k2(LPY1O5r{{mBbWK(F_POBM-hPWQlQZ_{>;{E zKaG@Lz}ZWnG{yRa$y^(aCtqMDZ@`fzad)dIJdA?+?6~Qltd4+RB6jGZNrRIv@u3hU z<=HSubEKL&OYRqqKRoa-gqPqEJly0dr&~4`d@_a79}&`2;B6BMVB+drYW8S-TY%%L zv)Yz^;5@PKSMEKrmjz!CwAIX3f|{jiVo;%VfJia#u-~koBqWCS!`?9>^mh$)XZ08n zt@wPE*pM{TLYM3x9tEW0!4lGapBbge{{QRvf0y{71(@|;zPe4@{mYMcfU>-XT)oW4 Gi2njqOg!%Z literal 0 HcmV?d00001 diff --git a/en/book/images/reset-path3.png b/en/book/images/reset-path3.png new file mode 100644 index 0000000000000000000000000000000000000000..a918e69d493dc201520ae0a69aa0b6d4880f0f6e GIT binary patch literal 12077 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 Da-IYP literal 0 HcmV?d00001 diff --git a/en/book/images/reset-soft.png b/en/book/images/reset-soft.png new file mode 100644 index 0000000000000000000000000000000000000000..791a02a4f8a8218f2017c82a3f0ff34c59f1adf6 GIT binary patch literal 12151 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 literal 0 HcmV?d00001 diff --git a/en/book/images/reset-squash-r2.png b/en/book/images/reset-squash-r2.png new file mode 100644 index 0000000000000000000000000000000000000000..9db8a771430ff8f0fc1f09768b7e9090c83d3c3d GIT binary patch literal 14773 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 literal 0 HcmV?d00001 From a4427a7196f0b93d07002f99570716cd501f6873 Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Mon, 26 May 2014 21:00:36 -0700 Subject: [PATCH 2/7] Some prose edits --- en/book/02-git-basics/chapter2.asc | 104 ++++++++++++++--------------- 1 file changed, 49 insertions(+), 55 deletions(-) diff --git a/en/book/02-git-basics/chapter2.asc b/en/book/02-git-basics/chapter2.asc index f721500ca..1b4953e4d 100644 --- a/en/book/02-git-basics/chapter2.asc +++ b/en/book/02-git-basics/chapter2.asc @@ -901,16 +901,18 @@ This is one of the few areas in Git where you may lose some work if you do it wr [[_reset]] ==== Reset Demystified -**TODO** +`git reset` is one of the most confusing parts of Git when you first encounter it. +The command does so many things, that it seems hopeless to actually understand it, and employ it properly. +For this, we recommend a simple metaphor. ===== The Three Trees -The way I now like to think about `reset` and `checkout` is through the mental frame of Git being a content manager of three different trees. -By ``tree'' here I really mean ``collection of files'', not specifically the data structure. -(Some Git developers will get a bit mad at me here, because there are a few cases where the index doesn't exactly act like a tree, but for our purposes it is easier – forgive me). +An easier way to think about `reset` and `checkout` is through the mental frame of Git being a content manager of three different trees. +By ``tree'' here we really mean ``collection of files'', not specifically the data structure. +(Some Git developers will get a bit mad here, because there are a few cases where the index doesn't exactly act like a tree, but for our purposes it is easier.) Git as a system manages and manipulates three trees in its normal operation. -Let's review them: +Here they are: [cols="2,4",options="header"] |================================ @@ -922,9 +924,9 @@ Let's review them: ====== The HEAD -The HEAD in Git is the pointer to the current branch reference, which is in turn a pointer to the last commit you made or the last commit that was checked out into your working directory. -That also means it will be the parent of the next commit you do. -It's generally simplest to think of it as HEAD is the snapshot of your last commit. +The HEAD in Git is the pointer to the current branch reference, which is in turn a pointer to the last commit made on that branch. +That also means it will be the parent of the next commit that is created. +It's generally simplest to think of HEAD as the *snapshot of your last commit*. In fact, it's pretty easy to see what the snapshot of your HEAD looks like. Here is an example of getting the actual directory listing and SHA checksums for each file in the HEAD snapshot: @@ -956,7 +958,7 @@ The Index is your proposed next commit. Git populates it with a list of all the file contents that were last checked out into your working directory and what they looked like when they were originally checked out. It's not technically a tree structure, it's a flattened manifest, but for our purposes it's close enough. When you run git commit, that command only looks at your Index by default, not at anything in your working directory. -So, it's simplest to think of it as the Index is the snapshot of your next commit. +So, it's simplest to think of the Index as the *snapshot of your next commit(). [source,shell] ---- @@ -970,7 +972,7 @@ $ git ls-files -s Finally, you have your working directory. This is where the content of files are placed into actual files on your filesystem so they're easily edited by you. -The Working Directory is your scratch space, used to easily modify file content. +The Working Directory is your *scratch space*, used to easily modify file content. [source,shell] ---- @@ -992,8 +994,8 @@ image::images/reset-workflow.png[] Let's visualize this process. Say you go into a new directory with a single file in it. -We'll call this V1 of the file and we'll indicate it in blue. -Now we run git init, which will create a Git repository with a HEAD reference that points to an unborn branch (aka, nothing). +We'll call this *v1* of the file and we'll indicate it in blue. +Now we run `git init`, which will create a Git repository with a HEAD reference that points to an unborn branch (`master` doesn't exist yet). image::images/reset-ex2.png[] @@ -1003,40 +1005,38 @@ Now we want to commit this file, so we use `git add` to take content in the Work image::images/reset-ex3.png[] -Then we run git commit to take what the Index looks like now and save it as a permanent snapshot pointed to by a commit, which HEAD is then updated to point at. +Then we run `git commit` to take what the Index looks like now and save it as a permanent snapshot pointed to by a commit, which HEAD is then updated to point at. image::images/reset-ex4.png[] At this point, all three of the trees are the same. -If we run `git status` now, we'll see no changes because they're all the same. +If we run `git status` now, we'll see no changes, because they're all the same. Now we want to make a change to that file and commit it. -We will go through the same process. -First we change the file in our working directory. +We'll go through the same process; first we change the file in our working directory. image::images/reset-ex5.png[] -If we run `git status` right now we'll see the file in red as -``changed but not updated'' because that entry differs between our Index and our Working Directory. +If we run `git status` right now, we'll see the file in red as +``Changes not staged for commit'' because that entry differs between our Index and our Working Directory. Next we run `git add` on it to stage it into our Index. image::images/reset-ex6.png[] At this point if we run `git status` we will see the file in green under ``Changes to be Committed'' because the Index and HEAD differ – that is, our proposed next commit is now different from our last commit. -Those are the entries we will see as ``to be Committed''. Finally, we run `git commit` to finalize the commit. image::images/reset-ex7.png[] -Now `git status` will give us no output because all three trees are the same. +Now `git status` will give us no output because all three trees are the same again. Switching branches or cloning goes through a similar process. When you checkout a branch, it changes *HEAD* to point to the new commit, populates your *Index* with the snapshot of that commit, then checks out the contents of the files in your *Index* into your *Working Directory*. ===== The Role of Reset -So the `reset` command makes more sense when viewed in this context. +The `reset` command makes more sense when viewed in this context. It directly manipulates these three trees in a simple and predictable way. It does up to three basic operations. @@ -1062,7 +1062,7 @@ You could now do a bit more work and `commit` again to accomplish basically what Note that if you run `git status` now you'll see in green the difference between the Index and what the new HEAD is. -The next thing `reset` will do is to update the Index with the contents of whatever tree HEAD now points to so they're the same. +The next thing `reset` will do is to update the Index with the contents of whatever tree HEAD now points to. image::images/reset-mixed.png[] @@ -1080,40 +1080,37 @@ If you use the `--hard` option, it will continue to this stage. image::images/reset-hard.png[] -Finally, take yet a third second to look at _that_ diagram and think about what happened. +Finally, take yet a third second to look at _THAT_ diagram and think about what happened. You undid your last commit, all the `git add`s, _and_ all the work you did in your working directory. -It's important to note at this point that this is the only way to make the `reset` command dangerous (ie: not working directory safe). -Any other invocation of `reset` can be pretty easily undone, the `--hard` option cannot, since it overwrites (without checking) any files in the Working Directory. -In this particular case, we still have the *V3* version of our file in a commit in our Git DB that we could get back by looking at our `reflog`, but if we had not committed it, Git still would have overwritten the file. +It's important to note that this is the only way `reset` to make the `reset` command dangerous (not working-directory safe). +Any other invocation of `reset` can be pretty easily undone, but the `--hard` option cannot, since it overwrites (without checking) any files in the Working Directory. +In this particular case, we still have the *v3* version of our file in a commit in our Git DB, and we could get it back by looking at our `reflog`, but if we had not committed it, Git still would have overwritten the file. ====== Overview -That is basically it. +That's basically it. The `reset` command overwrites these three trees in a specific order, stopping when you tell it to. -1. Move whatever branch HEAD points to _(stop if `--soft`)_ +1. Move whatever branch HEAD points to _(stop here if `--soft`)_ 2. THEN, make the Index look like that _(stop here unless `--hard`)_ 3. THEN, make the Working Directory look like that -There are also `--merge` and `--keep` options, but I would rather keep things simpler for now – that will be for another article. - Boom. You are now a `reset` master. ===== Reset With a Path - Well, I lied. That's not actually all. -If you specify a path, `reset` will skip the first step and just do the other ones but limited to a specific file or set of files. +If you specify a path, `reset` will skip the first step and just do the other ones, but it limits itself to a specific file or set of files. This actually sort of makes sense – if the first step is to move a pointer to a different commit, you can't make it point to _part_ of a commit, so it simply doesn't do that part. However, you can use `reset` to update part of the Index or the Working Directory with previously committed content this way. So, assume we run `git reset file.txt`. This assumes, since you did not specify a commit SHA or branch that points to a commit SHA, and that you provided no reset option, that you are typing the shorthand for `git reset --mixed HEAD file.txt`, which will: -1. Move whatever branch HEAD points to _(stop if `--soft`)_ *TODO: strikethrough* -2. THEN, make the Index look like that _(stop here unless `--hard`)_ +1. Move whatever branch HEAD points to _(Skipped)_ +2. THEN, make the Index look like that _(Stop here)_ So it essentially just takes whatever `file.txt` looks like in HEAD and puts that in the Index. @@ -1126,20 +1123,21 @@ This is why the output of the `git status` command suggests that you run this to image::images/reset-path2.png[] -We could just as easily not let Git assume we meant ``pull the data from HEAD'' by specifying a specific commit to pull that file version from to populate our Index by running something like `git reset eb43bf file.txt`. +We could just as easily not let Git assume we meant ``pull the data from HEAD'' by specifying a specific commit to pull that file version from. +We would just run something like `git reset eb43bf file.txt`. image::images/reset-path3.png[] So what does that mean? -That functionally does the same thing as if we had reverted the content of the file to *v1*, ran `git add` on it, then reverted it back to to *v3* again. -If we run `git commit`, it will record a change that reverts that file back to *v1*, even though we never actually had it in our Working Directory again. +It does the same thing as if we had reverted the content of the file to *v1*, ran `git add` on it, then reverted it back to *v3* again. +If we run `git commit` now, it will record a change that reverts that file back to *v1*, even though we never actually had it in our Working Directory again. It's also pretty interesting to note that like `git add --patch`, the `reset` command will accept a `--patch` option to unstage content on a hunk-by-hunk basis. So you can selectively unstage or revert content. ===== A Fun Example -I may use the term ``fun'' here a bit loosely, but if this doesn't sound like fun to you, you may drink while doing it. +The term ``fun'' is used a bit loosely here, but if this doesn't sound like fun to you, you may drink while doing it. Let's look at how to do something interesting with this newfound power – squashing commits. If you have this history and you're about to push and you want to squash down the last N commits you've done into one awesome commit that makes you look really smart (vs a bunch of commits with messages like ``oops.'', ``WIP'' and ``forgot this file'') you can use `reset` to quickly and easily do that (as opposed to using `git rebase -i`). @@ -1159,12 +1157,13 @@ And then simply run `git commit` again: image::images/reset-squash-r3.png[] Now you can see that your reachable history, the history you would push, now looks like you had one commit with the one file, then a second that both added the new file and modified the first to it's final state. +In this case, it was more straightforward to do this than a `rebase -i`. ===== Check It Out -Finally, some of you may wonder what the difference between `checkout` and `reset` is. -Well, like `reset`, `checkout` manipulates the three trees and it is a bit different depending on whether you give the command a file path or not. +Finally, you may wonder what the difference between `checkout` and `reset` is. +Well, like `reset`, `checkout` manipulates the three trees, and it is a bit different depending on whether you give the command a file path or not. So, let's look at both examples seperately. @@ -1175,7 +1174,7 @@ Running `git checkout [branch]` is pretty similar to running `git reset --hard [ First, unlike `reset --hard`, `checkout` is working directory safe in this invocation. It will check to make sure it's not blowing away files that have changes to them. Actually, this is a subtle difference, because it will update all of the working directory except the files you've modified if it can – it will do a trivial merge between what you're checking out and what's already there. -In this case, `reset --hard` will simply replace everything across the board without checking. +`reset --hard`, on the other hand, will simply replace everything across the board without checking. The second important difference is how it updates HEAD. Where `reset` will move the branch that HEAD points to, `checkout` will move HEAD itself to point to another branch. @@ -1185,16 +1184,15 @@ For instance, if we have two branches, `master` and `develop` pointing at differ On the other hand, if we instead run `git checkout master`, `develop` will not move, HEAD itself will. HEAD will now point to `master`. So, in both cases we're moving HEAD to point to commit A, but _how_ we do so is very different. -`reset` will move the branch HEAD points to, `checkout` moves HEAD itself to point to another branch. +`reset` will move the branch HEAD points to, `checkout` moves HEAD itself. image::images/reset-checkout.png[] ====== `git checkout [branch] file` -The other way to run `checkout` is with a file path, which like `reset`, does not move HEAD. +The other way to run `checkout` is with a file path, which, like `reset`, does not move HEAD. It is just like `git reset [branch] file` in that it updates the index with that file at that commit, but it also overwrites the file in the working directory. -Think of it like `git reset --hard [branch] file` – it would be exactly the same thing, it is also not working directory safe and it also does not move HEAD. -The only difference is that `reset` with a file name will not accept `--hard`, so you can't actually run that. +It would be exactly like `git reset --hard [branch] file` (if `reset` would let you run that) – it's not working-directory safe, and it does not move HEAD. Also, like `git reset` and `git add`, `checkout` will accept a `--patch` option to allow you to selectively revert file contents on a hunk-by-hunk basis. @@ -1202,24 +1200,20 @@ Also, like `git reset` and `git add`, `checkout` will accept a `--patch` option Hopefully now you understand and feel more comfortable with the `reset` command, but are probably still a little confused about how exactly it differs from `checkout` and could not possibly remember all the rules of the different invocations. -So to help you out, I've created something that I pretty much hate, which is a table. -However, if you've followed the article at all, it may be a useful cheat sheet or reminder. -The table shows each class of the `reset` and `checkout` commands and which of the three trees it updates. - -Pay especial attention to the 'WD Safe?' -column – if it's red, really think about it before you run that command. +To help you out, here's a cheat-sheet for which commands affect which trees. +Pay especial attention to the 'WD Safe?' column – if it says *NO*, really think before you run that command. -[options="header", cols="2,1,1,1,1"] +[options="header", cols="3,1,1,1,1"] |================================ -| | HEAD | Index | Workdir | WD Safe +| | HEAD | Index | Workdir | WD Safe? | *Commit Level* | | | | | `reset --soft [commit]` | REF | NO | NO | YES | `reset [commit]` | REF | YES | NO | YES -| `reset --hard [commit]` | REF | YES | YES | NO +| `reset --hard [commit]` | REF | YES | YES | *NO* | `checkout [commit]` | HEAD | YES | YES | YES | *File Level* | | | | | `reset (commit) [file]` | NO | YES | NO | YES -| `checkout (commit) [file]` | NO | YES | YES | NO +| `checkout (commit) [file]` | NO | YES | YES | *NO* |================================ From 73b52d688b1d48d1d907f48522ee36b465665cd9 Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Fri, 30 May 2014 10:37:59 -0600 Subject: [PATCH 3/7] More prose edits for reset section --- en/book/02-git-basics/chapter2.asc | 170 ++++++++++++-------------- en/book/03-git-branching/chapter3.asc | 1 + 2 files changed, 80 insertions(+), 91 deletions(-) diff --git a/en/book/02-git-basics/chapter2.asc b/en/book/02-git-basics/chapter2.asc index 1b4953e4d..94f64fdb7 100644 --- a/en/book/02-git-basics/chapter2.asc +++ b/en/book/02-git-basics/chapter2.asc @@ -901,20 +901,19 @@ This is one of the few areas in Git where you may lose some work if you do it wr [[_reset]] ==== Reset Demystified -`git reset` is one of the most confusing parts of Git when you first encounter it. -The command does so many things, that it seems hopeless to actually understand it, and employ it properly. +`reset` and `checkout` are two of the most confusing parts of Git when you first encounter them. +These commands do so many things, that it seems hopeless to actually understand them, and employ them properly. For this, we recommend a simple metaphor. ===== The Three Trees An easier way to think about `reset` and `checkout` is through the mental frame of Git being a content manager of three different trees. By ``tree'' here we really mean ``collection of files'', not specifically the data structure. -(Some Git developers will get a bit mad here, because there are a few cases where the index doesn't exactly act like a tree, but for our purposes it is easier.) +(There are a few cases where the index doesn't exactly act like a tree, but for our purposes it is easier.) -Git as a system manages and manipulates three trees in its normal operation. -Here they are: +Git as a system manages and manipulates three trees in its normal operation: -[cols="2,4",options="header"] +[cols="1,2",options="header"] |================================ | Tree | Role | HEAD | Last commit snapshot, next parent @@ -924,11 +923,11 @@ Here they are: ====== The HEAD -The HEAD in Git is the pointer to the current branch reference, which is in turn a pointer to the last commit made on that branch. -That also means it will be the parent of the next commit that is created. -It's generally simplest to think of HEAD as the *snapshot of your last commit*. +HEAD is the pointer to the current branch reference, which is in turn a pointer to the last commit made on that branch. +That means HEAD will be the parent of the next commit that is created. +It's generally simplest to think of HEAD as the snapshot of *your last commit*. -In fact, it's pretty easy to see what the snapshot of your HEAD looks like. +In fact, it's pretty easy to see what that snapshot looks like. Here is an example of getting the actual directory listing and SHA checksums for each file in the HEAD snapshot: [source,shell] @@ -954,11 +953,9 @@ $ git ls-tree -r cfda3bf379e4f8dba8717dee55aab78aef7f4daf ====== The Index -The Index is your proposed next commit. +The Index is your *proposed next commit*. Git populates it with a list of all the file contents that were last checked out into your working directory and what they looked like when they were originally checked out. -It's not technically a tree structure, it's a flattened manifest, but for our purposes it's close enough. -When you run git commit, that command only looks at your Index by default, not at anything in your working directory. -So, it's simplest to think of the Index as the *snapshot of your next commit(). +You then replace some of those files with new versions of them, and `git commit` converts that into the tree for a new commit. [source,shell] ---- @@ -968,11 +965,14 @@ $ git ls-files -s 100644 47c6340d6459e05787f644c2447d2595f5d3a54b 0 lib/simplegit.rb ---- +The index is not technically a tree structure – it's a flattened manifest – but for our purposes it's close enough. + ====== The Working Directory Finally, you have your working directory. -This is where the content of files are placed into actual files on your filesystem so they're easily edited by you. -The Working Directory is your *scratch space*, used to easily modify file content. +The other two trees store their content in an efficient but inconvenient manner, inside the `.git` folder. +The Working Directory unpacks them into actual files, which makes it much easier for you to edit them. +Think of the Working Directory as a *sandbox*, where you can try changes out before committing them to history. [source,shell] ---- @@ -988,51 +988,49 @@ $ tree ===== The Workflow -So, Git is all about recording snapshots of your project in successively better states by manipulating these three trees, or collections of contents of files. +Git's main purpose is to record snapshots of your project in successively better states, by manipulating these three trees. image::images/reset-workflow.png[] -Let's visualize this process. -Say you go into a new directory with a single file in it. -We'll call this *v1* of the file and we'll indicate it in blue. -Now we run `git init`, which will create a Git repository with a HEAD reference that points to an unborn branch (`master` doesn't exist yet). +Let's visualize this process: say you go into a new directory with a single file in it. +We'll call this *v1* of the file, and we'll indicate it in blue. +Now we run `git init`, which will create a Git repository with a HEAD reference which points to an unborn branch (`master` doesn't exist yet). image::images/reset-ex2.png[] At this point, only the Working Directory tree has any content. -Now we want to commit this file, so we use `git add` to take content in the Working Directory and populate the Index with the updated content. +Now we want to commit this file, so we use `git add` to take content in the Working Directory and copy it to the Index. image::images/reset-ex3.png[] -Then we run `git commit` to take what the Index looks like now and save it as a permanent snapshot pointed to by a commit, which HEAD is then updated to point at. +Then we run `git commit`, which takes the contents of the Index and saves it as a permanent snapshot, creates a commit object which points to that snapshot, and updates `master` to point to that commit. image::images/reset-ex4.png[] -At this point, all three of the trees are the same. -If we run `git status` now, we'll see no changes, because they're all the same. +If we run `git status`, we'll see no changes, because all three trees are the same. Now we want to make a change to that file and commit it. We'll go through the same process; first we change the file in our working directory. +Let's call this *v2* of the file, and indicate it in green. image::images/reset-ex5.png[] -If we run `git status` right now, we'll see the file in red as -``Changes not staged for commit'' because that entry differs between our Index and our Working Directory. +If we run `git status` right now, we'll see the file in red as ``Changes not staged for commit,'' because that entry differs between the Index and the Working Directory. Next we run `git add` on it to stage it into our Index. image::images/reset-ex6.png[] At this point if we run `git status` we will see the file in green -under ``Changes to be Committed'' because the Index and HEAD differ – that is, our proposed next commit is now different from our last commit. +under ``Changes to be committed'' because the Index and HEAD differ – that is, our proposed next commit is now different from our last commit. Finally, we run `git commit` to finalize the commit. image::images/reset-ex7.png[] -Now `git status` will give us no output because all three trees are the same again. +Now `git status` will give us no output, because all three trees are the same again. Switching branches or cloning goes through a similar process. -When you checkout a branch, it changes *HEAD* to point to the new commit, populates your *Index* with the snapshot of that commit, then checks out the contents of the files in your *Index* into your *Working Directory*. +When you checkout a branch, it changes *HEAD* to point to the new branch ref, populates your *Index* with the snapshot of that commit, then copies the contents of the *Index* into your *Working Directory*. ===== The Role of Reset @@ -1040,109 +1038,101 @@ The `reset` command makes more sense when viewed in this context. It directly manipulates these three trees in a simple and predictable way. It does up to three basic operations. -====== Step 1: Moving HEAD (`--soft`) +====== Step 1: Move HEAD The first thing `reset` will do is move what HEAD points to. -Unlike `checkout` it does not move what branch HEAD points to, it directly changes the SHA of the reference itself. -This means if HEAD is pointing to the `master` branch, running `git reset 9e5e64a` will first of all make `master` point to `9e5e64a` before it does anything else. +This isn't the same as changing HEAD itself (which is what `checkout` does); `reset` moves the branch that HEAD is pointing to. +This means if HEAD is set to the `master` branch, running `git reset 9e5e64a` will start by making `master` point to `9e5e64a`. image::images/reset-soft.png[] No matter what form of `reset` with a commit you invoke, this is the first thing it will always try to do. -If you add the flag `--soft`, this is the *only* thing it will do. -With `--soft`, `reset` will simply stop there. +With `reset --soft`, it will simply stop there. -Now take a second to look at that diagram and realize what it did. -It essentially undid the last commit you made. -When you run `git commit`, Git will create a new commit and move the branch that HEAD points to up to it. -When you `reset` back to `HEAD~` (the parent of HEAD), you are moving the branch back to where it was without changing the Index (staging area) or Working Directory. -You could now do a bit more work and `commit` again to accomplish basically what `git commit --amend` would have done. +Now take a second to look at that diagram and realize what happened: it essentially undid the last `git commit` command. +When you run `git commit`, Git creates a new commit and moves the branch that HEAD points to up to it. +When you `reset` back to `HEAD~` (the parent of HEAD), you are moving the branch back to where it was, without changing the Index or Working Directory. +You could now update the Index and run `git commit` again to accomplish what `git commit --amend` would have done. ====== Step 2: Updating the Index (`--mixed`) Note that if you run `git status` now you'll see in green the difference between the Index and what the new HEAD is. -The next thing `reset` will do is to update the Index with the contents of whatever tree HEAD now points to. +The next thing `reset` will do is to update the Index with the contents of whatever snapshot HEAD now points to. image::images/reset-mixed.png[] If you specify the `--mixed` option, `reset` will stop at this point. This is also the default, so if you specify no option at all, this is where the command will stop. -Now take another second to look at THAT diagram and realize what it did. -It still undid your last `commit`, but also _unstaged_ everything. +Now take another second to look at THAT diagram and realize what happened: it still undid your last `commit`, but also _unstaged_ everything. You rolled back to before you ran all your `git add`s _AND_ `git commit`. ====== Step 3: Updating the Working Directory (`--hard`) -The third thing that `reset` will do is to then make the Working Directory look like the Index. +The third thing that `reset` will do is to make the Working Directory look like the Index. If you use the `--hard` option, it will continue to this stage. image::images/reset-hard.png[] -Finally, take yet a third second to look at _THAT_ diagram and think about what happened. -You undid your last commit, all the `git add`s, _and_ all the work you did in your working directory. +Finally, take yet another second to look at _THAT_ diagram and think about what happened. +You undid your last commit, all the `git add`s, _AND_ all the work you did in your working directory. -It's important to note that this is the only way `reset` to make the `reset` command dangerous (not working-directory safe). -Any other invocation of `reset` can be pretty easily undone, but the `--hard` option cannot, since it overwrites (without checking) any files in the Working Directory. +It's important to note that this is the only way `reset` to make the `reset` command dangerous, and one of the very few cases where Git will actually destroy data. +Any other invocation of `reset` can be pretty easily undone, but the `--hard` option cannot, since it forcibly overwrites files in the Working Directory. In this particular case, we still have the *v3* version of our file in a commit in our Git DB, and we could get it back by looking at our `reflog`, but if we had not committed it, Git still would have overwritten the file. -====== Overview - -That's basically it. -The `reset` command overwrites these three trees in a specific order, stopping when you tell it to. +====== Recap -1. Move whatever branch HEAD points to _(stop here if `--soft`)_ -2. THEN, make the Index look like that _(stop here unless `--hard`)_ -3. THEN, make the Working Directory look like that +The `reset` command overwrites these three trees in a specific order, stopping when you tell it to: -Boom. You are now a `reset` master. +1. Move the branch HEAD points to _(stop here if `--soft`)_ +2. Make the Index look like HEAD _(stop here unless `--hard`)_ +3. Make the Working Directory look like the Index ===== Reset With a Path -Well, I lied. -That's not actually all. -If you specify a path, `reset` will skip the first step and just do the other ones, but it limits itself to a specific file or set of files. -This actually sort of makes sense – if the first step is to move a pointer to a different commit, you can't make it point to _part_ of a commit, so it simply doesn't do that part. -However, you can use `reset` to update part of the Index or the Working Directory with previously committed content this way. +That covers the behavior of `reset` in its basic form, but you can also provide it with a path to act upon. +If you specify a path, `reset` will skip step 1, and limit the remainder of its actions to a specific file or set of files. +This actually sort of makes sense – HEAD is just a pointer, and you can't point to part of one commit and part of another. +But the Index and Working directory _can_ be partially updated, so reset proceeds with steps 2 and 3. So, assume we run `git reset file.txt`. -This assumes, since you did not specify a commit SHA or branch that points to a commit SHA, and that you provided no reset option, that you are typing the shorthand for `git reset --mixed HEAD file.txt`, which will: +This form (since you did not specify a commit SHA or branch, and you didn't specify `--soft` or `--hard`) is shorthand for `git reset --mixed HEAD file.txt`, which will: -1. Move whatever branch HEAD points to _(Skipped)_ -2. THEN, make the Index look like that _(Stop here)_ +1. Move the branch HEAD points to _(skipped)_ +2. Make the Index look like HEAD _(stop here)_ -So it essentially just takes whatever `file.txt` looks like in HEAD and puts that in the Index. +So it essentially just copies `file.txt` from HEAD to the Index. image::images/reset-path1.png[] -So what does that do in a practical sense? -Well, it _unstages_ the file. -If we look at the diagram for that command vs what `git add` does, we can see that it is simply the opposite. -This is why the output of the `git status` command suggests that you run this to unstage a file. +This has the practical effect of _unstaging_ the file. +If we look at the diagram for that command and think about what `git add` does, they are exact opposites. image::images/reset-path2.png[] +This is why the output of the `git status` command suggests that you run this to unstage a file. + We could just as easily not let Git assume we meant ``pull the data from HEAD'' by specifying a specific commit to pull that file version from. We would just run something like `git reset eb43bf file.txt`. image::images/reset-path3.png[] -So what does that mean? -It does the same thing as if we had reverted the content of the file to *v1*, ran `git add` on it, then reverted it back to *v3* again. +This effectively does the same thing as if we had reverted the content of the file to *v1* in the Working Directory, ran `git add` on it, then reverted it back to *v3* again (without actually going through all those steps). If we run `git commit` now, it will record a change that reverts that file back to *v1*, even though we never actually had it in our Working Directory again. -It's also pretty interesting to note that like `git add --patch`, the `reset` command will accept a `--patch` option to unstage content on a hunk-by-hunk basis. +It's also interesting to note that like `git add`, the `reset` command will accept a `--patch` option to unstage content on a hunk-by-hunk basis. So you can selectively unstage or revert content. -===== A Fun Example +===== Squashing -The term ``fun'' is used a bit loosely here, but if this doesn't sound like fun to you, you may drink while doing it. Let's look at how to do something interesting with this newfound power – squashing commits. -If you have this history and you're about to push and you want to squash down the last N commits you've done into one awesome commit that makes you look really smart (vs a bunch of commits with messages like ``oops.'', ``WIP'' and ``forgot this file'') you can use `reset` to quickly and easily do that (as opposed to using `git rebase -i`). +Say you have a series of commits with messages like ``oops.'', ``WIP'' and ``forgot this file''. +You can use `reset` to quickly and easily squash them into a single commit that makes you look really smart. +(<<_rebasing>> shows another way to do this, but in this example it's simpler to use `reset`.) -So, let's take a slightly more complex example. Let's say you have a project where the first commit has one file, the second commit added a new file and changed the first, and the third commit changed the first file again. The second commit was a work in progress and you want to squash it down. @@ -1156,39 +1146,36 @@ And then simply run `git commit` again: image::images/reset-squash-r3.png[] -Now you can see that your reachable history, the history you would push, now looks like you had one commit with the one file, then a second that both added the new file and modified the first to it's final state. -In this case, it was more straightforward to do this than a `rebase -i`. +Now you can see that your reachable history, the history you would push, now looks like you had one commit with `file-a.txt` v1, then a second that both modified `file-a.txt` to v2 and added `file-b.txt`. ===== Check It Out Finally, you may wonder what the difference between `checkout` and `reset` is. -Well, like `reset`, `checkout` manipulates the three trees, and it is a bit different depending on whether you give the command a file path or not. -So, let's look at both examples seperately. - +Like `reset`, `checkout` manipulates the three trees, and it is a bit different depending on whether you give the command a file path or not. -====== `git checkout [branch]` +====== Without Paths Running `git checkout [branch]` is pretty similar to running `git reset --hard [branch]` in that it updates all three trees for you to look like `[branch]`, but there are two important differences. -First, unlike `reset --hard`, `checkout` is working directory safe in this invocation. -It will check to make sure it's not blowing away files that have changes to them. -Actually, this is a subtle difference, because it will update all of the working directory except the files you've modified if it can – it will do a trivial merge between what you're checking out and what's already there. +First, unlike `reset --hard`, `checkout` is working-directory safe; it will check to make sure it's not blowing away files that have changes to them. +Actually, it's a bit smarter than that – it tries to do a trivial merge in the Working Directory, so all of the files you _haven't_ changed in will be updated. `reset --hard`, on the other hand, will simply replace everything across the board without checking. The second important difference is how it updates HEAD. Where `reset` will move the branch that HEAD points to, `checkout` will move HEAD itself to point to another branch. -For instance, if we have two branches, `master` and `develop` pointing at different commits, and we're currently on `develop` (so HEAD points to it) and we run `git reset master`, `develop` itself will now point to the same commit that `master` does. - -On the other hand, if we instead run `git checkout master`, `develop` will not move, HEAD itself will. +For instance, say we have `master` and `develop` branches which point at different commits, and we're currently on `develop` (so HEAD points to it). +If we run `git reset master`, `develop` itself will now point to the same commit that `master` does. +If we instead run `git checkout master`, `develop` does not move, HEAD itself does. HEAD will now point to `master`. + So, in both cases we're moving HEAD to point to commit A, but _how_ we do so is very different. `reset` will move the branch HEAD points to, `checkout` moves HEAD itself. image::images/reset-checkout.png[] -====== `git checkout [branch] file` +====== With Paths The other way to run `checkout` is with a file path, which, like `reset`, does not move HEAD. It is just like `git reset [branch] file` in that it updates the index with that file at that commit, but it also overwrites the file in the working directory. @@ -1200,8 +1187,9 @@ Also, like `git reset` and `git add`, `checkout` will accept a `--patch` option Hopefully now you understand and feel more comfortable with the `reset` command, but are probably still a little confused about how exactly it differs from `checkout` and could not possibly remember all the rules of the different invocations. -To help you out, here's a cheat-sheet for which commands affect which trees. -Pay especial attention to the 'WD Safe?' column – if it says *NO*, really think before you run that command. +Here's a cheat-sheet for which commands affect which trees. +The ``HEAD'' column reads ``REF'' if that command moves the ref HEAD points to, and ``HEAD'' if it moves HEAD itself. +Pay especial attention to the 'WD Safe?' column – if it says *NO*, take a second to think before running that command. [options="header", cols="3,1,1,1,1"] |================================ diff --git a/en/book/03-git-branching/chapter3.asc b/en/book/03-git-branching/chapter3.asc index 0660f434b..5ce8df1ba 100644 --- a/en/book/03-git-branching/chapter3.asc +++ b/en/book/03-git-branching/chapter3.asc @@ -826,6 +826,7 @@ You may want to dog-ear this page, because you’ll need that command, and you A way to remember this command is by recalling the `git push [remotename] [localbranch]:[remotebranch]` syntax that we went over a bit earlier. If you leave off the `[localbranch]` portion, then you’re basically saying, ``Take nothing on my side and make it be `[remotebranch]`.'' +[[_rebasing]] === Rebasing In Git, there are two main ways to integrate changes from one branch into another: the `merge` and the `rebase`. From 9b76e9ee563c59f061aab99fa507ef59d08b9aef Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Fri, 30 May 2014 10:55:37 -0600 Subject: [PATCH 4/7] Make new section fit in better --- en/book/02-git-basics/chapter2.asc | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/en/book/02-git-basics/chapter2.asc b/en/book/02-git-basics/chapter2.asc index 94f64fdb7..5da3e1375 100644 --- a/en/book/02-git-basics/chapter2.asc +++ b/en/book/02-git-basics/chapter2.asc @@ -901,8 +901,9 @@ This is one of the few areas in Git where you may lose some work if you do it wr [[_reset]] ==== Reset Demystified -`reset` and `checkout` are two of the most confusing parts of Git when you first encounter them. -These commands do so many things, that it seems hopeless to actually understand them, and employ them properly. +Before moving on to more specialized tools, let's talk about `reset` and `checkout`. +These commands are two of the most confusing parts of Git when you first encounter them. +They do so many things, that it seems hopeless to actually understand them, and employ them properly. For this, we recommend a simple metaphor. ===== The Three Trees @@ -1052,7 +1053,7 @@ With `reset --soft`, it will simply stop there. Now take a second to look at that diagram and realize what happened: it essentially undid the last `git commit` command. When you run `git commit`, Git creates a new commit and moves the branch that HEAD points to up to it. When you `reset` back to `HEAD~` (the parent of HEAD), you are moving the branch back to where it was, without changing the Index or Working Directory. -You could now update the Index and run `git commit` again to accomplish what `git commit --amend` would have done. +You could now update the Index and run `git commit` again to accomplish what `git commit --amend` would have done (see <<_amend>>). ====== Step 2: Updating the Index (`--mixed`) @@ -1113,6 +1114,7 @@ If we look at the diagram for that command and think about what `git add` does, image::images/reset-path2.png[] This is why the output of the `git status` command suggests that you run this to unstage a file. +(See <<_unstaging>> for more on this.) We could just as easily not let Git assume we meant ``pull the data from HEAD'' by specifying a specific commit to pull that file version from. We would just run something like `git reset eb43bf file.txt`. @@ -1204,11 +1206,11 @@ Pay especial attention to the 'WD Safe?' column – if it says *NO*, take a seco | `checkout (commit) [file]` | NO | YES | YES | *NO* |================================ - +[[_amend]] ==== Changing Your Last Commit -One of the common undos takes place when you commit too early and possibly forget to add some files, or you mess up your commit message. -If you want to try that commit again, you can run commit with the `--amend` option: +One of the most common undos takes place when you commit too early and possibly forget to add some files, or you mess up your commit message. +While you can fix this with `reset`, the task is common enough that it's actually included with the `commit` command, by way of the `--amend` option: [source,shell] ---- @@ -1216,7 +1218,7 @@ $ git commit --amend ---- This command takes your staging area and uses it for the commit. -If you’ve made no changes since your last commit (for instance, you run this command immediately after your previous commit), then your snapshot will look exactly the same and all you’ll change is your commit message. +If you’ve made no changes since your last commit (for instance, you run this command immediately after your previous commit), then your snapshot will look exactly the same, and all you’ll change is your commit message. The same commit-message editor fires up, but it already contains the message of your previous commit. You can edit the message the same as always, but it overwrites your previous commit. @@ -1232,6 +1234,7 @@ $ git commit --amend You end up with a single commit – the second commit replaces the results of the first. +[[_unstaging]] ==== Unstaging a Staged File The next two sections demonstrate how to wrangle your staging area and working directory changes. From 678943babb47e810c94f2ee3a8596e856d0afcac Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Tue, 3 Jun 2014 21:23:53 -0700 Subject: [PATCH 5/7] Move three-trees to chapter 7 --- book/02-git-basics/1-git-basics.asc | 308 ------------------ book/07-git-tools/1-git-tools.asc | 308 ++++++++++++++++++ .../07-git-tools}/images/reset-checkout.png | Bin .../07-git-tools}/images/reset-ex2.png | Bin .../07-git-tools}/images/reset-ex3.png | Bin .../07-git-tools}/images/reset-ex4.png | Bin .../07-git-tools}/images/reset-ex5.png | Bin .../07-git-tools}/images/reset-ex6.png | Bin .../07-git-tools}/images/reset-ex7.png | Bin .../07-git-tools}/images/reset-hard.png | Bin .../07-git-tools}/images/reset-mixed.png | Bin .../07-git-tools}/images/reset-path1.png | Bin .../07-git-tools}/images/reset-path2.png | Bin .../07-git-tools}/images/reset-path3.png | Bin .../07-git-tools}/images/reset-soft.png | Bin .../07-git-tools}/images/reset-squash-r1.png | Bin .../07-git-tools}/images/reset-squash-r2.png | Bin .../07-git-tools}/images/reset-squash-r3.png | Bin .../07-git-tools}/images/reset-workflow.png | Bin 19 files changed, 308 insertions(+), 308 deletions(-) rename {en/book => book/07-git-tools}/images/reset-checkout.png (100%) rename {en/book => book/07-git-tools}/images/reset-ex2.png (100%) rename {en/book => book/07-git-tools}/images/reset-ex3.png (100%) rename {en/book => book/07-git-tools}/images/reset-ex4.png (100%) rename {en/book => book/07-git-tools}/images/reset-ex5.png (100%) rename {en/book => book/07-git-tools}/images/reset-ex6.png (100%) rename {en/book => book/07-git-tools}/images/reset-ex7.png (100%) rename {en/book => book/07-git-tools}/images/reset-hard.png (100%) rename {en/book => book/07-git-tools}/images/reset-mixed.png (100%) rename {en/book => book/07-git-tools}/images/reset-path1.png (100%) rename {en/book => book/07-git-tools}/images/reset-path2.png (100%) rename {en/book => book/07-git-tools}/images/reset-path3.png (100%) rename {en/book => book/07-git-tools}/images/reset-soft.png (100%) rename {en/book => book/07-git-tools}/images/reset-squash-r1.png (100%) rename {en/book => book/07-git-tools}/images/reset-squash-r2.png (100%) rename {en/book => book/07-git-tools}/images/reset-squash-r3.png (100%) rename {en/book => book/07-git-tools}/images/reset-workflow.png (100%) diff --git a/book/02-git-basics/1-git-basics.asc b/book/02-git-basics/1-git-basics.asc index c929d4f1e..a6bc345a3 100644 --- a/book/02-git-basics/1-git-basics.asc +++ b/book/02-git-basics/1-git-basics.asc @@ -885,314 +885,6 @@ Here, we’ll review a few basic tools for undoing changes that you’ve made. Be careful, because you can’t always undo some of these undos. This is one of the few areas in Git where you may lose some work if you do it wrong. -[[_reset]] -==== Reset Demystified - -Before moving on to more specialized tools, let's talk about `reset` and `checkout`. -These commands are two of the most confusing parts of Git when you first encounter them. -They do so many things, that it seems hopeless to actually understand them, and employ them properly. -For this, we recommend a simple metaphor. - -===== The Three Trees - -An easier way to think about `reset` and `checkout` is through the mental frame of Git being a content manager of three different trees. -By ``tree'' here we really mean ``collection of files'', not specifically the data structure. -(There are a few cases where the index doesn't exactly act like a tree, but for our purposes it is easier.) - -Git as a system manages and manipulates three trees in its normal operation: - -[cols="1,2",options="header"] -|================================ -| Tree | Role -| HEAD | Last commit snapshot, next parent -| Index | Proposed next commit snapshot -| Working Directory | Sandbox -|================================ - -====== The HEAD - -HEAD is the pointer to the current branch reference, which is in turn a pointer to the last commit made on that branch. -That means HEAD will be the parent of the next commit that is created. -It's generally simplest to think of HEAD as the snapshot of *your last commit*. - -In fact, it's pretty easy to see what that snapshot looks like. -Here is an example of getting the actual directory listing and SHA checksums for each file in the HEAD snapshot: - -[source,shell] ----- -$ cat .git/HEAD -ref: refs/heads/master - -$ cat .git/refs/heads/master -e9a570524b63d2a2b3a7c3325acf5b89bbeb131e - -$ git cat-file -p e9a570524b63d2a2b3a7c3325acf5b89bbeb131e -tree cfda3bf379e4f8dba8717dee55aab78aef7f4daf -author Scott Chacon 1301511835 -0700 -committer Scott Chacon 1301511835 -0700 - -initial commit - -$ git ls-tree -r cfda3bf379e4f8dba8717dee55aab78aef7f4daf -100644 blob a906cb2a4a904a152... README -100644 blob 8f94139338f9404f2... Rakefile -040000 tree 99f1a6d12cb4b6f19... lib ----- - -====== The Index - -The Index is your *proposed next commit*. -Git populates it with a list of all the file contents that were last checked out into your working directory and what they looked like when they were originally checked out. -You then replace some of those files with new versions of them, and `git commit` converts that into the tree for a new commit. - -[source,shell] ----- -$ git ls-files -s -100644 a906cb2a4a904a152e80877d4088654daad0c859 0 README -100644 8f94139338f9404f26296befa88755fc2598c289 0 Rakefile -100644 47c6340d6459e05787f644c2447d2595f5d3a54b 0 lib/simplegit.rb ----- - -The index is not technically a tree structure – it's a flattened manifest – but for our purposes it's close enough. - -====== The Working Directory - -Finally, you have your working directory. -The other two trees store their content in an efficient but inconvenient manner, inside the `.git` folder. -The Working Directory unpacks them into actual files, which makes it much easier for you to edit them. -Think of the Working Directory as a *sandbox*, where you can try changes out before committing them to history. - -[source,shell] ----- -$ tree -. -├── README -├── Rakefile -└── lib - └── simplegit.rb - -1 directory, 3 files ----- - -===== The Workflow - -Git's main purpose is to record snapshots of your project in successively better states, by manipulating these three trees. - -image::images/reset-workflow.png[] - -Let's visualize this process: say you go into a new directory with a single file in it. -We'll call this *v1* of the file, and we'll indicate it in blue. -Now we run `git init`, which will create a Git repository with a HEAD reference which points to an unborn branch (`master` doesn't exist yet). - -image::images/reset-ex2.png[] - -At this point, only the Working Directory tree has any content. - -Now we want to commit this file, so we use `git add` to take content in the Working Directory and copy it to the Index. - -image::images/reset-ex3.png[] - -Then we run `git commit`, which takes the contents of the Index and saves it as a permanent snapshot, creates a commit object which points to that snapshot, and updates `master` to point to that commit. - -image::images/reset-ex4.png[] - -If we run `git status`, we'll see no changes, because all three trees are the same. - -Now we want to make a change to that file and commit it. -We'll go through the same process; first we change the file in our working directory. -Let's call this *v2* of the file, and indicate it in green. - -image::images/reset-ex5.png[] - -If we run `git status` right now, we'll see the file in red as ``Changes not staged for commit,'' because that entry differs between the Index and the Working Directory. -Next we run `git add` on it to stage it into our Index. - -image::images/reset-ex6.png[] - -At this point if we run `git status` we will see the file in green -under ``Changes to be committed'' because the Index and HEAD differ – that is, our proposed next commit is now different from our last commit. -Finally, we run `git commit` to finalize the commit. - -image::images/reset-ex7.png[] - -Now `git status` will give us no output, because all three trees are the same again. - -Switching branches or cloning goes through a similar process. -When you checkout a branch, it changes *HEAD* to point to the new branch ref, populates your *Index* with the snapshot of that commit, then copies the contents of the *Index* into your *Working Directory*. - -===== The Role of Reset - -The `reset` command makes more sense when viewed in this context. -It directly manipulates these three trees in a simple and predictable way. -It does up to three basic operations. - -====== Step 1: Move HEAD - -The first thing `reset` will do is move what HEAD points to. -This isn't the same as changing HEAD itself (which is what `checkout` does); `reset` moves the branch that HEAD is pointing to. -This means if HEAD is set to the `master` branch, running `git reset 9e5e64a` will start by making `master` point to `9e5e64a`. - -image::images/reset-soft.png[] - -No matter what form of `reset` with a commit you invoke, this is the first thing it will always try to do. -With `reset --soft`, it will simply stop there. - -Now take a second to look at that diagram and realize what happened: it essentially undid the last `git commit` command. -When you run `git commit`, Git creates a new commit and moves the branch that HEAD points to up to it. -When you `reset` back to `HEAD~` (the parent of HEAD), you are moving the branch back to where it was, without changing the Index or Working Directory. -You could now update the Index and run `git commit` again to accomplish what `git commit --amend` would have done (see <<_amend>>). - -====== Step 2: Updating the Index (`--mixed`) - -Note that if you run `git status` now you'll see in green the difference between the Index and what the new HEAD is. - -The next thing `reset` will do is to update the Index with the contents of whatever snapshot HEAD now points to. - -image::images/reset-mixed.png[] - -If you specify the `--mixed` option, `reset` will stop at this point. -This is also the default, so if you specify no option at all, this is where the command will stop. - -Now take another second to look at THAT diagram and realize what happened: it still undid your last `commit`, but also _unstaged_ everything. -You rolled back to before you ran all your `git add`s _AND_ `git commit`. - -====== Step 3: Updating the Working Directory (`--hard`) - -The third thing that `reset` will do is to make the Working Directory look like the Index. -If you use the `--hard` option, it will continue to this stage. - -image::images/reset-hard.png[] - -Finally, take yet another second to look at _THAT_ diagram and think about what happened. -You undid your last commit, all the `git add`s, _AND_ all the work you did in your working directory. - -It's important to note that this is the only way `reset` to make the `reset` command dangerous, and one of the very few cases where Git will actually destroy data. -Any other invocation of `reset` can be pretty easily undone, but the `--hard` option cannot, since it forcibly overwrites files in the Working Directory. -In this particular case, we still have the *v3* version of our file in a commit in our Git DB, and we could get it back by looking at our `reflog`, but if we had not committed it, Git still would have overwritten the file. - -====== Recap - -The `reset` command overwrites these three trees in a specific order, stopping when you tell it to: - -1. Move the branch HEAD points to _(stop here if `--soft`)_ -2. Make the Index look like HEAD _(stop here unless `--hard`)_ -3. Make the Working Directory look like the Index - -===== Reset With a Path - -That covers the behavior of `reset` in its basic form, but you can also provide it with a path to act upon. -If you specify a path, `reset` will skip step 1, and limit the remainder of its actions to a specific file or set of files. -This actually sort of makes sense – HEAD is just a pointer, and you can't point to part of one commit and part of another. -But the Index and Working directory _can_ be partially updated, so reset proceeds with steps 2 and 3. - -So, assume we run `git reset file.txt`. -This form (since you did not specify a commit SHA or branch, and you didn't specify `--soft` or `--hard`) is shorthand for `git reset --mixed HEAD file.txt`, which will: - -1. Move the branch HEAD points to _(skipped)_ -2. Make the Index look like HEAD _(stop here)_ - -So it essentially just copies `file.txt` from HEAD to the Index. - -image::images/reset-path1.png[] - -This has the practical effect of _unstaging_ the file. -If we look at the diagram for that command and think about what `git add` does, they are exact opposites. - -image::images/reset-path2.png[] - -This is why the output of the `git status` command suggests that you run this to unstage a file. -(See <<_unstaging>> for more on this.) - -We could just as easily not let Git assume we meant ``pull the data from HEAD'' by specifying a specific commit to pull that file version from. -We would just run something like `git reset eb43bf file.txt`. - -image::images/reset-path3.png[] - -This effectively does the same thing as if we had reverted the content of the file to *v1* in the Working Directory, ran `git add` on it, then reverted it back to *v3* again (without actually going through all those steps). -If we run `git commit` now, it will record a change that reverts that file back to *v1*, even though we never actually had it in our Working Directory again. - -It's also interesting to note that like `git add`, the `reset` command will accept a `--patch` option to unstage content on a hunk-by-hunk basis. -So you can selectively unstage or revert content. - -===== Squashing - -Let's look at how to do something interesting with this newfound power – squashing commits. - -Say you have a series of commits with messages like ``oops.'', ``WIP'' and ``forgot this file''. -You can use `reset` to quickly and easily squash them into a single commit that makes you look really smart. -(<<_rebasing>> shows another way to do this, but in this example it's simpler to use `reset`.) - -Let's say you have a project where the first commit has one file, the second commit added a new file and changed the first, and the third commit changed the first file again. -The second commit was a work in progress and you want to squash it down. - -image::images/reset-squash-r1.png[] - -You can run `git reset --soft HEAD~2` to move the HEAD branch back to an older commit (the first commit you want to keep): - -image::images/reset-squash-r2.png[] - -And then simply run `git commit` again: - -image::images/reset-squash-r3.png[] - -Now you can see that your reachable history, the history you would push, now looks like you had one commit with `file-a.txt` v1, then a second that both modified `file-a.txt` to v2 and added `file-b.txt`. - - -===== Check It Out - -Finally, you may wonder what the difference between `checkout` and `reset` is. -Like `reset`, `checkout` manipulates the three trees, and it is a bit different depending on whether you give the command a file path or not. - -====== Without Paths - -Running `git checkout [branch]` is pretty similar to running `git reset --hard [branch]` in that it updates all three trees for you to look like `[branch]`, but there are two important differences. - -First, unlike `reset --hard`, `checkout` is working-directory safe; it will check to make sure it's not blowing away files that have changes to them. -Actually, it's a bit smarter than that – it tries to do a trivial merge in the Working Directory, so all of the files you _haven't_ changed in will be updated. -`reset --hard`, on the other hand, will simply replace everything across the board without checking. - -The second important difference is how it updates HEAD. -Where `reset` will move the branch that HEAD points to, `checkout` will move HEAD itself to point to another branch. - -For instance, say we have `master` and `develop` branches which point at different commits, and we're currently on `develop` (so HEAD points to it). -If we run `git reset master`, `develop` itself will now point to the same commit that `master` does. -If we instead run `git checkout master`, `develop` does not move, HEAD itself does. -HEAD will now point to `master`. - -So, in both cases we're moving HEAD to point to commit A, but _how_ we do so is very different. -`reset` will move the branch HEAD points to, `checkout` moves HEAD itself. - -image::images/reset-checkout.png[] - -====== With Paths - -The other way to run `checkout` is with a file path, which, like `reset`, does not move HEAD. -It is just like `git reset [branch] file` in that it updates the index with that file at that commit, but it also overwrites the file in the working directory. -It would be exactly like `git reset --hard [branch] file` (if `reset` would let you run that) – it's not working-directory safe, and it does not move HEAD. - -Also, like `git reset` and `git add`, `checkout` will accept a `--patch` option to allow you to selectively revert file contents on a hunk-by-hunk basis. - -===== Summary - -Hopefully now you understand and feel more comfortable with the `reset` command, but are probably still a little confused about how exactly it differs from `checkout` and could not possibly remember all the rules of the different invocations. - -Here's a cheat-sheet for which commands affect which trees. -The ``HEAD'' column reads ``REF'' if that command moves the ref HEAD points to, and ``HEAD'' if it moves HEAD itself. -Pay especial attention to the 'WD Safe?' column – if it says *NO*, take a second to think before running that command. - -[options="header", cols="3,1,1,1,1"] -|================================ -| | HEAD | Index | Workdir | WD Safe? -| *Commit Level* | | | | -| `reset --soft [commit]` | REF | NO | NO | YES -| `reset [commit]` | REF | YES | NO | YES -| `reset --hard [commit]` | REF | YES | YES | *NO* -| `checkout [commit]` | HEAD | YES | YES | YES -| *File Level* | | | | -| `reset (commit) [file]` | NO | YES | NO | YES -| `checkout (commit) [file]` | NO | YES | YES | *NO* -|================================ - [[_amend]] ==== Changing Your Last Commit diff --git a/book/07-git-tools/1-git-tools.asc b/book/07-git-tools/1-git-tools.asc index e71785038..adb80b5a2 100644 --- a/book/07-git-tools/1-git-tools.asc +++ b/book/07-git-tools/1-git-tools.asc @@ -605,6 +605,314 @@ This is a nice shortcut to recover stashed work easily and work on it in a new b === Searching +[[_reset]] +==== Reset Demystified + +Before moving on to more specialized tools, let's talk about `reset` and `checkout`. +These commands are two of the most confusing parts of Git when you first encounter them. +They do so many things, that it seems hopeless to actually understand them, and employ them properly. +For this, we recommend a simple metaphor. + +===== The Three Trees + +An easier way to think about `reset` and `checkout` is through the mental frame of Git being a content manager of three different trees. +By ``tree'' here we really mean ``collection of files'', not specifically the data structure. +(There are a few cases where the index doesn't exactly act like a tree, but for our purposes it is easier.) + +Git as a system manages and manipulates three trees in its normal operation: + +[cols="1,2",options="header"] +|================================ +| Tree | Role +| HEAD | Last commit snapshot, next parent +| Index | Proposed next commit snapshot +| Working Directory | Sandbox +|================================ + +====== The HEAD + +HEAD is the pointer to the current branch reference, which is in turn a pointer to the last commit made on that branch. +That means HEAD will be the parent of the next commit that is created. +It's generally simplest to think of HEAD as the snapshot of *your last commit*. + +In fact, it's pretty easy to see what that snapshot looks like. +Here is an example of getting the actual directory listing and SHA checksums for each file in the HEAD snapshot: + +[source,shell] +---- +$ cat .git/HEAD +ref: refs/heads/master + +$ cat .git/refs/heads/master +e9a570524b63d2a2b3a7c3325acf5b89bbeb131e + +$ git cat-file -p e9a570524b63d2a2b3a7c3325acf5b89bbeb131e +tree cfda3bf379e4f8dba8717dee55aab78aef7f4daf +author Scott Chacon 1301511835 -0700 +committer Scott Chacon 1301511835 -0700 + +initial commit + +$ git ls-tree -r cfda3bf379e4f8dba8717dee55aab78aef7f4daf +100644 blob a906cb2a4a904a152... README +100644 blob 8f94139338f9404f2... Rakefile +040000 tree 99f1a6d12cb4b6f19... lib +---- + +====== The Index + +The Index is your *proposed next commit*. +Git populates it with a list of all the file contents that were last checked out into your working directory and what they looked like when they were originally checked out. +You then replace some of those files with new versions of them, and `git commit` converts that into the tree for a new commit. + +[source,shell] +---- +$ git ls-files -s +100644 a906cb2a4a904a152e80877d4088654daad0c859 0 README +100644 8f94139338f9404f26296befa88755fc2598c289 0 Rakefile +100644 47c6340d6459e05787f644c2447d2595f5d3a54b 0 lib/simplegit.rb +---- + +The index is not technically a tree structure – it's a flattened manifest – but for our purposes it's close enough. + +====== The Working Directory + +Finally, you have your working directory. +The other two trees store their content in an efficient but inconvenient manner, inside the `.git` folder. +The Working Directory unpacks them into actual files, which makes it much easier for you to edit them. +Think of the Working Directory as a *sandbox*, where you can try changes out before committing them to history. + +[source,shell] +---- +$ tree +. +├── README +├── Rakefile +└── lib + └── simplegit.rb + +1 directory, 3 files +---- + +===== The Workflow + +Git's main purpose is to record snapshots of your project in successively better states, by manipulating these three trees. + +image::images/reset-workflow.png[] + +Let's visualize this process: say you go into a new directory with a single file in it. +We'll call this *v1* of the file, and we'll indicate it in blue. +Now we run `git init`, which will create a Git repository with a HEAD reference which points to an unborn branch (`master` doesn't exist yet). + +image::images/reset-ex2.png[] + +At this point, only the Working Directory tree has any content. + +Now we want to commit this file, so we use `git add` to take content in the Working Directory and copy it to the Index. + +image::images/reset-ex3.png[] + +Then we run `git commit`, which takes the contents of the Index and saves it as a permanent snapshot, creates a commit object which points to that snapshot, and updates `master` to point to that commit. + +image::images/reset-ex4.png[] + +If we run `git status`, we'll see no changes, because all three trees are the same. + +Now we want to make a change to that file and commit it. +We'll go through the same process; first we change the file in our working directory. +Let's call this *v2* of the file, and indicate it in green. + +image::images/reset-ex5.png[] + +If we run `git status` right now, we'll see the file in red as ``Changes not staged for commit,'' because that entry differs between the Index and the Working Directory. +Next we run `git add` on it to stage it into our Index. + +image::images/reset-ex6.png[] + +At this point if we run `git status` we will see the file in green +under ``Changes to be committed'' because the Index and HEAD differ – that is, our proposed next commit is now different from our last commit. +Finally, we run `git commit` to finalize the commit. + +image::images/reset-ex7.png[] + +Now `git status` will give us no output, because all three trees are the same again. + +Switching branches or cloning goes through a similar process. +When you checkout a branch, it changes *HEAD* to point to the new branch ref, populates your *Index* with the snapshot of that commit, then copies the contents of the *Index* into your *Working Directory*. + +===== The Role of Reset + +The `reset` command makes more sense when viewed in this context. +It directly manipulates these three trees in a simple and predictable way. +It does up to three basic operations. + +====== Step 1: Move HEAD + +The first thing `reset` will do is move what HEAD points to. +This isn't the same as changing HEAD itself (which is what `checkout` does); `reset` moves the branch that HEAD is pointing to. +This means if HEAD is set to the `master` branch, running `git reset 9e5e64a` will start by making `master` point to `9e5e64a`. + +image::images/reset-soft.png[] + +No matter what form of `reset` with a commit you invoke, this is the first thing it will always try to do. +With `reset --soft`, it will simply stop there. + +Now take a second to look at that diagram and realize what happened: it essentially undid the last `git commit` command. +When you run `git commit`, Git creates a new commit and moves the branch that HEAD points to up to it. +When you `reset` back to `HEAD~` (the parent of HEAD), you are moving the branch back to where it was, without changing the Index or Working Directory. +You could now update the Index and run `git commit` again to accomplish what `git commit --amend` would have done (see <<_amend>>). + +====== Step 2: Updating the Index (`--mixed`) + +Note that if you run `git status` now you'll see in green the difference between the Index and what the new HEAD is. + +The next thing `reset` will do is to update the Index with the contents of whatever snapshot HEAD now points to. + +image::images/reset-mixed.png[] + +If you specify the `--mixed` option, `reset` will stop at this point. +This is also the default, so if you specify no option at all, this is where the command will stop. + +Now take another second to look at THAT diagram and realize what happened: it still undid your last `commit`, but also _unstaged_ everything. +You rolled back to before you ran all your `git add`s _AND_ `git commit`. + +====== Step 3: Updating the Working Directory (`--hard`) + +The third thing that `reset` will do is to make the Working Directory look like the Index. +If you use the `--hard` option, it will continue to this stage. + +image::images/reset-hard.png[] + +Finally, take yet another second to look at _THAT_ diagram and think about what happened. +You undid your last commit, all the `git add`s, _AND_ all the work you did in your working directory. + +It's important to note that this is the only way `reset` to make the `reset` command dangerous, and one of the very few cases where Git will actually destroy data. +Any other invocation of `reset` can be pretty easily undone, but the `--hard` option cannot, since it forcibly overwrites files in the Working Directory. +In this particular case, we still have the *v3* version of our file in a commit in our Git DB, and we could get it back by looking at our `reflog`, but if we had not committed it, Git still would have overwritten the file. + +====== Recap + +The `reset` command overwrites these three trees in a specific order, stopping when you tell it to: + +1. Move the branch HEAD points to _(stop here if `--soft`)_ +2. Make the Index look like HEAD _(stop here unless `--hard`)_ +3. Make the Working Directory look like the Index + +===== Reset With a Path + +That covers the behavior of `reset` in its basic form, but you can also provide it with a path to act upon. +If you specify a path, `reset` will skip step 1, and limit the remainder of its actions to a specific file or set of files. +This actually sort of makes sense – HEAD is just a pointer, and you can't point to part of one commit and part of another. +But the Index and Working directory _can_ be partially updated, so reset proceeds with steps 2 and 3. + +So, assume we run `git reset file.txt`. +This form (since you did not specify a commit SHA or branch, and you didn't specify `--soft` or `--hard`) is shorthand for `git reset --mixed HEAD file.txt`, which will: + +1. Move the branch HEAD points to _(skipped)_ +2. Make the Index look like HEAD _(stop here)_ + +So it essentially just copies `file.txt` from HEAD to the Index. + +image::images/reset-path1.png[] + +This has the practical effect of _unstaging_ the file. +If we look at the diagram for that command and think about what `git add` does, they are exact opposites. + +image::images/reset-path2.png[] + +This is why the output of the `git status` command suggests that you run this to unstage a file. +(See <<_unstaging>> for more on this.) + +We could just as easily not let Git assume we meant ``pull the data from HEAD'' by specifying a specific commit to pull that file version from. +We would just run something like `git reset eb43bf file.txt`. + +image::images/reset-path3.png[] + +This effectively does the same thing as if we had reverted the content of the file to *v1* in the Working Directory, ran `git add` on it, then reverted it back to *v3* again (without actually going through all those steps). +If we run `git commit` now, it will record a change that reverts that file back to *v1*, even though we never actually had it in our Working Directory again. + +It's also interesting to note that like `git add`, the `reset` command will accept a `--patch` option to unstage content on a hunk-by-hunk basis. +So you can selectively unstage or revert content. + +===== Squashing + +Let's look at how to do something interesting with this newfound power – squashing commits. + +Say you have a series of commits with messages like ``oops.'', ``WIP'' and ``forgot this file''. +You can use `reset` to quickly and easily squash them into a single commit that makes you look really smart. +(<<_rebasing>> shows another way to do this, but in this example it's simpler to use `reset`.) + +Let's say you have a project where the first commit has one file, the second commit added a new file and changed the first, and the third commit changed the first file again. +The second commit was a work in progress and you want to squash it down. + +image::images/reset-squash-r1.png[] + +You can run `git reset --soft HEAD~2` to move the HEAD branch back to an older commit (the first commit you want to keep): + +image::images/reset-squash-r2.png[] + +And then simply run `git commit` again: + +image::images/reset-squash-r3.png[] + +Now you can see that your reachable history, the history you would push, now looks like you had one commit with `file-a.txt` v1, then a second that both modified `file-a.txt` to v2 and added `file-b.txt`. + + +===== Check It Out + +Finally, you may wonder what the difference between `checkout` and `reset` is. +Like `reset`, `checkout` manipulates the three trees, and it is a bit different depending on whether you give the command a file path or not. + +====== Without Paths + +Running `git checkout [branch]` is pretty similar to running `git reset --hard [branch]` in that it updates all three trees for you to look like `[branch]`, but there are two important differences. + +First, unlike `reset --hard`, `checkout` is working-directory safe; it will check to make sure it's not blowing away files that have changes to them. +Actually, it's a bit smarter than that – it tries to do a trivial merge in the Working Directory, so all of the files you _haven't_ changed in will be updated. +`reset --hard`, on the other hand, will simply replace everything across the board without checking. + +The second important difference is how it updates HEAD. +Where `reset` will move the branch that HEAD points to, `checkout` will move HEAD itself to point to another branch. + +For instance, say we have `master` and `develop` branches which point at different commits, and we're currently on `develop` (so HEAD points to it). +If we run `git reset master`, `develop` itself will now point to the same commit that `master` does. +If we instead run `git checkout master`, `develop` does not move, HEAD itself does. +HEAD will now point to `master`. + +So, in both cases we're moving HEAD to point to commit A, but _how_ we do so is very different. +`reset` will move the branch HEAD points to, `checkout` moves HEAD itself. + +image::images/reset-checkout.png[] + +====== With Paths + +The other way to run `checkout` is with a file path, which, like `reset`, does not move HEAD. +It is just like `git reset [branch] file` in that it updates the index with that file at that commit, but it also overwrites the file in the working directory. +It would be exactly like `git reset --hard [branch] file` (if `reset` would let you run that) – it's not working-directory safe, and it does not move HEAD. + +Also, like `git reset` and `git add`, `checkout` will accept a `--patch` option to allow you to selectively revert file contents on a hunk-by-hunk basis. + +===== Summary + +Hopefully now you understand and feel more comfortable with the `reset` command, but are probably still a little confused about how exactly it differs from `checkout` and could not possibly remember all the rules of the different invocations. + +Here's a cheat-sheet for which commands affect which trees. +The ``HEAD'' column reads ``REF'' if that command moves the ref HEAD points to, and ``HEAD'' if it moves HEAD itself. +Pay especial attention to the 'WD Safe?' column – if it says *NO*, take a second to think before running that command. + +[options="header", cols="3,1,1,1,1"] +|================================ +| | HEAD | Index | Workdir | WD Safe? +| *Commit Level* | | | | +| `reset --soft [commit]` | REF | NO | NO | YES +| `reset [commit]` | REF | YES | NO | YES +| `reset --hard [commit]` | REF | YES | YES | *NO* +| `checkout [commit]` | HEAD | YES | YES | YES +| *File Level* | | | | +| `reset (commit) [file]` | NO | YES | NO | YES +| `checkout (commit) [file]` | NO | YES | YES | *NO* +|================================ + === Rewriting History Many times, when working with Git, you may want to revise your commit history for some reason. diff --git a/en/book/images/reset-checkout.png b/book/07-git-tools/images/reset-checkout.png similarity index 100% rename from en/book/images/reset-checkout.png rename to book/07-git-tools/images/reset-checkout.png diff --git a/en/book/images/reset-ex2.png b/book/07-git-tools/images/reset-ex2.png similarity index 100% rename from en/book/images/reset-ex2.png rename to book/07-git-tools/images/reset-ex2.png diff --git a/en/book/images/reset-ex3.png b/book/07-git-tools/images/reset-ex3.png similarity index 100% rename from en/book/images/reset-ex3.png rename to book/07-git-tools/images/reset-ex3.png diff --git a/en/book/images/reset-ex4.png b/book/07-git-tools/images/reset-ex4.png similarity index 100% rename from en/book/images/reset-ex4.png rename to book/07-git-tools/images/reset-ex4.png diff --git a/en/book/images/reset-ex5.png b/book/07-git-tools/images/reset-ex5.png similarity index 100% rename from en/book/images/reset-ex5.png rename to book/07-git-tools/images/reset-ex5.png diff --git a/en/book/images/reset-ex6.png b/book/07-git-tools/images/reset-ex6.png similarity index 100% rename from en/book/images/reset-ex6.png rename to book/07-git-tools/images/reset-ex6.png diff --git a/en/book/images/reset-ex7.png b/book/07-git-tools/images/reset-ex7.png similarity index 100% rename from en/book/images/reset-ex7.png rename to book/07-git-tools/images/reset-ex7.png diff --git a/en/book/images/reset-hard.png b/book/07-git-tools/images/reset-hard.png similarity index 100% rename from en/book/images/reset-hard.png rename to book/07-git-tools/images/reset-hard.png diff --git a/en/book/images/reset-mixed.png b/book/07-git-tools/images/reset-mixed.png similarity index 100% rename from en/book/images/reset-mixed.png rename to book/07-git-tools/images/reset-mixed.png diff --git a/en/book/images/reset-path1.png b/book/07-git-tools/images/reset-path1.png similarity index 100% rename from en/book/images/reset-path1.png rename to book/07-git-tools/images/reset-path1.png diff --git a/en/book/images/reset-path2.png b/book/07-git-tools/images/reset-path2.png similarity index 100% rename from en/book/images/reset-path2.png rename to book/07-git-tools/images/reset-path2.png diff --git a/en/book/images/reset-path3.png b/book/07-git-tools/images/reset-path3.png similarity index 100% rename from en/book/images/reset-path3.png rename to book/07-git-tools/images/reset-path3.png diff --git a/en/book/images/reset-soft.png b/book/07-git-tools/images/reset-soft.png similarity index 100% rename from en/book/images/reset-soft.png rename to book/07-git-tools/images/reset-soft.png diff --git a/en/book/images/reset-squash-r1.png b/book/07-git-tools/images/reset-squash-r1.png similarity index 100% rename from en/book/images/reset-squash-r1.png rename to book/07-git-tools/images/reset-squash-r1.png diff --git a/en/book/images/reset-squash-r2.png b/book/07-git-tools/images/reset-squash-r2.png similarity index 100% rename from en/book/images/reset-squash-r2.png rename to book/07-git-tools/images/reset-squash-r2.png diff --git a/en/book/images/reset-squash-r3.png b/book/07-git-tools/images/reset-squash-r3.png similarity index 100% rename from en/book/images/reset-squash-r3.png rename to book/07-git-tools/images/reset-squash-r3.png diff --git a/en/book/images/reset-workflow.png b/book/07-git-tools/images/reset-workflow.png similarity index 100% rename from en/book/images/reset-workflow.png rename to book/07-git-tools/images/reset-workflow.png From f9fed8f55e34bc1f3711b1c9dc2b133cb8d076a3 Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Tue, 3 Jun 2014 21:32:20 -0700 Subject: [PATCH 6/7] Reset now comes after this --- book/03-git-branching/1-git-branching.asc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/book/03-git-branching/1-git-branching.asc b/book/03-git-branching/1-git-branching.asc index 5ce8df1ba..90da322bd 100644 --- a/book/03-git-branching/1-git-branching.asc +++ b/book/03-git-branching/1-git-branching.asc @@ -491,11 +491,10 @@ In most cases, if you follow the errant `git merge` with `git reset --merge ORIG .History after `git reset --merge` image::images/undomerge-reset.png[History after `git reset --merge`.] -We covered `reset` back in <<_reset>>, so it shouldn't be too hard to figure out what's going on here. -Here's a quick refresher: `reset --hard` usually goes through three steps: +We'll cover `reset` a bit more in <<_reset>>, but here's a quick taste: `reset --hard` usually goes through three steps: 1. Move the ref that `HEAD` points to. - In this case, we want to move `master` to where it was before the merge commit (`C6`). + (In this case, we want to move `master` to where it was before the merge commit, at `C6`). 2. Make the index look like `HEAD`. 3. Make the working directory look like the index. From fe3c6cb0be382c133a1e8e3267c72b00dbf03beb Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Fri, 6 Jun 2014 14:09:17 -0700 Subject: [PATCH 7/7] Re-add lost headers --- book/07-git-tools/1-git-tools.asc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/book/07-git-tools/1-git-tools.asc b/book/07-git-tools/1-git-tools.asc index d82bc116b..f975bdcee 100644 --- a/book/07-git-tools/1-git-tools.asc +++ b/book/07-git-tools/1-git-tools.asc @@ -688,6 +688,12 @@ error: could not verify the tag 'v1.4.2.1' === Searching +=== Interactive Staging + +==== Staging and Unstaging Files + +==== Staging Patches + [[_reset]] ==== Reset Demystified