Re: git stash and manually edited chunks
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Nov 3, 2010, 10:53 UTC
- Message-ID
- <vpqr5f2ptjb.fsf@bauges.imag.fr>
- In-Reply-To
- <AANLkTi=O8oPjcPN1j8513Kp+OtY7Cs5WgdiVhHnyzX=C@mail.gmail.com>
Gavin Guo <tuffkidtt@gmail.com> writes:
Show 23 quoted lines
>> Let's say the state of your working tree here is A (and last commit is >> HEAD). >> >>> * git add -p my_file >>> * I edit a chunk *manually* (using e) >> >> Here, the index contains a state which is neither in the working tree >> nor in the last commit. Let's call this state B. >> >>> * git stash --keep-index >> >> Here, the working tree takes state B. >> >>> * git stash pop >> >> Here, you're trying to apply the stash, which is somehow a diff >> between HEAD and A, on your tree which is in state B. Hence the >> conflicts. > > I am confusing about the description here. Git stash --keep-index > exist after editing the hunk, so why stash will save the difference > between HEAD and A, I think it should be the state which is modified > by git add -p(using e), and as a result of no conflict.
It's actually both. And indeed, "diff" is slightly oversimplified : stash saves the state of HEAD and of the index, as two commits. Try running "gitk --all" after stash to see what's going on.
-- Matthieu Moy http://www-verimag.imag.fr/~moy/