Thread (2 messages) 2 messages, 2 authors, 2026-01-01

Re: [PATCH v2 4/4] doc: git-reset: clarify `git reset <pathspec>`

From: D. Ben Knoble <hidden>
Date: 2026-01-01 22:32:55

On Tue, Dec 30, 2025 at 12:23 AM Junio C Hamano [off-list ref] wrote:
"D. Ben Knoble" [off-list ref] writes:
quoted
 `git reset (--patch | -p) [<tree-ish>] [--] [<pathspec>...]`::
-     Interactively select hunks in the difference between the index
-     and _<tree-ish>_ (defaults to `HEAD`).  The chosen hunks are applied
-     in reverse to the index.
+     Interactively select changes from the difference between the index
+     and the specified commit or tree (which defaults to `HEAD`).
+     The chosen changes are added to the index.
The previous iteration said "changes are unstaged", implying that
the changes are removed from the index.  But now it says the changes
are added to the index.  Which one?
Ah, I think I really mean that _changes_ are added. The change might
be an addition (+) or subtraction (-) in patch terms, so some changes
may result in the index having fewer modifications relative to the
working tree or something. But it's not
very clear, and certainly a bit pedantic.
I think neither is correct.  I wasn't involved in the design of the
behaviour of "reset -p", but IIUC,

    git reset -p
    git reset -p HEAD

show "git diff --cached HEAD" (i.e., what damage you will cause if
you commit what is in the index), so chosen hunks will be reverted
out of the index if you say "y" to "reset -p" prompt.
Indeed. I was actually expecting to see the reverse hunks here, so I
was surprised to see the staged hunks.
On the other hand,

    git reset -p COMMIT

for COMMIT that is not HEAD gives "git diff -R --cached COMMIT"
(i.e., the changes to take you closer to the named commit), so
chosen hunks will participate in the next commit if you commit after
completing this "reset -p" session.
Hm. I can see how this behaves nearly the opposite of the former. Yikes.
    The contents in the index are modified using the chosen hunks.

is the best description I can come up with.

The actual prompt asks "unstage this hunk?" when operating against
HEAD, while the prompt changes to "apply this hunk to index?" when
opeating against a commit that is not HEAD, so it might be simpler
not to say anything about the direction of the application (i.e.,
how the chosen hunks are used to modify the index) in this
paragraph, like the above example, may be a viable option.
Yeah, I think so. Will send a new version with this update.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help