Thread (1 message) 1 message, 1 author, 2016-06-15

Re: git stash and manually edited chunks

From: Matthieu Moy <hidden>
Date: 2016-06-15 22:49:58

Gavin Guo [off-list ref] writes:
quoted
Let's say the state of your working tree here is A (and last commit is
HEAD).
quoted
* 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.
quoted
* git stash --keep-index
Here, the working tree takes state B.
quoted
* 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/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help