git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
D. Ben Knoble <ben.knoble+github@gmail.com>
Date
Jan 1, 2026, 22:32 UTC
Message-ID
<CALnO6CDDqwC-YpL6c7Ed1yD+xBuzTxAZo867AUue7=iAo5adNQ@mail.gmail.com>
In-Reply-To
<xmqqwm24fsq4.fsf@gitster.g>
On Tue, Dec 30, 2025 at 12:23 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 14 quoted lines
>
> "D. Ben Knoble" <ben.knoble+github@gmail.com> writes:
>
> >  `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.

Show 9 quoted lines
> 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.

Show 8 quoted lines
> 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.
Show 10 quoted lines
>     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.
Previous: Junio C HamanoNext: D. Ben Knoble
Message 26 of 39 in “doc: git-reset: clarify DESCRIPTION section”
  1. 0/4 doc: git-reset: clarify DESCRIPTION sectionJulia Evans via GitGitGadget, Oct 17, 2025
  2. 1/4 doc: git-reset: reorder the formsJulia Evans via GitGitGadget, Oct 17, 2025
  3. Junio C HamanoOct 17, 2025
  4. Julia EvansOct 20, 2025
  5. 2/4 doc: git-reset: clarify introJulia Evans via GitGitGadget, Oct 17, 2025
  6. Junio C HamanoOct 17, 2025
  7. Julia EvansOct 20, 2025
  8. Junio C HamanoOct 20, 2025
  9. D. Ben KnobleOct 20, 2025
  10. Julia EvansDec 3, 2025
  11. 3/4 doc: git-reset: clarify `git reset [mode]`Julia Evans via GitGitGadget, Oct 17, 2025
  12. Junio C HamanoOct 18, 2025
  13. Julia EvansOct 20, 2025
  14. D. Ben KnobleOct 20, 2025
  15. Junio C HamanoOct 20, 2025
  16. 4/4 doc: git-reset: clarify `git reset <pathspec>`Julia Evans via GitGitGadget, Oct 17, 2025
  17. Junio C HamanoOct 17, 2025
  18. Ben KnobleOct 18, 2025
  19. Junio C HamanoOct 18, 2025
  20. 0/4 doc: git-reset: clarify DESCRIPTION sectionD. Ben Knoble, Dec 19, 2025
  21. 1/4 doc: git-reset: reorder the formsD. Ben Knoble, Dec 19, 2025
  22. 2/4 doc: git-reset: clarify introD. Ben Knoble, Dec 19, 2025
  23. 3/4 doc: git-reset: clarify `git reset [mode]`D. Ben Knoble, Dec 19, 2025
  24. 4/4 doc: git-reset: clarify `git reset <pathspec>`D. Ben Knoble, Dec 19, 2025
  25. Junio C HamanoDec 30, 2025
  26. D. Ben KnobleJan 1, 2026
  27. 0/4 doc: git-reset: clarify DESCRIPTION sectionD. Ben Knoble, Jan 1, 2026
  28. 1/4 doc: git-reset: reorder the formsD. Ben Knoble, Jan 1, 2026
  29. 2/4 doc: git-reset: clarify introD. Ben Knoble, Jan 1, 2026
  30. Jean-Noël AVILAJan 2, 2026
  31. 3/4 doc: git-reset: clarify `git reset [mode]`D. Ben Knoble, Jan 1, 2026
  32. Jean-Noël AVILAJan 2, 2026
  33. 4/4 doc: git-reset: clarify `git reset <pathspec>`D. Ben Knoble, Jan 1, 2026
  34. 0/4 doc: git-reset: clarify DESCRIPTION sectionD. Ben Knoble, Jan 5, 2026
  35. 1/4 doc: git-reset: reorder the formsD. Ben Knoble, Jan 5, 2026
  36. 2/4 doc: git-reset: clarify introD. Ben Knoble, Jan 5, 2026
  37. 3/4 doc: git-reset: clarify `git reset [mode]`D. Ben Knoble, Jan 5, 2026
  38. 4/4 doc: git-reset: clarify `git reset <pathspec>`D. Ben Knoble, Jan 5, 2026
  39. Junio C HamanoJan 7, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.