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

Re: [PATCH] Documentation: add a planning document for the next CLI revamp

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 2, 2008, 22:17 UTC
Message-ID
<7vabch22ou.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<20081030170329.GK24098@artemis.corp>
Pierre Habouzit <madcoder@debian.org> writes:
Show 7 quoted lines
> On Thu, Oct 30, 2008 at 05:00:18PM +0000, Nicolas Pitre wrote:
>
>> If you have a file argument, the --hard option is redundant, isn't it?
>> So what about simply "git reset <file>" ?
>
> errrrm, git reset <file> resets the index notion of the file to its status
> in HEAD... which I'm sure is *somehow* useful to "some" people ;P

I'd agree that 'reset' is rather unfortunate. It very originally was all about the index (the "mixed" semantics, specifically "git reset" without any committish nor any pathspec, was the original use case) and nothing else. IOW, "I staged a wrong change, let's start over by discarding all staged changes". A logical extension to it is "git reset -- pathspec", IOW, "I know which paths I fubared, please reset only these paths, as other staged changes are Ok".

So "reset <file>" is very much useful.

Then 'reset' learned to also muck with HEAD, so "reset HEAD^" (still mixed, without any pathspec) can be used to amend the latest commit but without losing the state you would eventually want to arrive at. A logical extension to this was "git reset --hard HEAD^" to nuking instead of amending the mistake, and "git reset --soft HEAD^" to save the trouble of staging the changes when the mistake you are fixing is small compared to the entire change.

"checkout [$committish] $path" came much later, and the command is all about index and files, and never about resetting HEAD. "checkout $path" does "reset --hard $path" (notice there is no $committish in either one) would have done, so we stopped enhancing the "reset" command in that direction.

Previous: Sam VilainNext: Sam Vilain
Message 39 of 49 in “Documentation: add a planning document for the next CLI revamp”
  1. Documentation: add a planning document for the next CLI revampSam Vilain, Oct 30, 2008
  2. Stefan KarpinskiOct 30, 2008
  3. Kyle MoffettOct 31, 2008
  4. Pierre HabouzitOct 30, 2008
  5. Julian PhillipsOct 30, 2008
  6. Jeff KingOct 31, 2008
  7. Junio C HamanoNov 2, 2008
  8. Pierre HabouzitNov 3, 2008
  9. Nicolas PitreOct 30, 2008
  10. Shawn O. PearceOct 30, 2008
  11. Mike HommeyOct 30, 2008
  12. Pierre HabouzitOct 30, 2008
  13. Nicolas PitreOct 30, 2008
  14. Sam VilainOct 30, 2008
  15. Nicolas PitreOct 30, 2008
  16. Yann DirsonOct 30, 2008
  17. Sam VilainOct 30, 2008
  18. Jakub NarebskiOct 30, 2008
  19. Sam VilainOct 31, 2008
  20. Jakub NarebskiOct 31, 2008
  21. Sam VilainNov 3, 2008
  22. Jakub NarebskiNov 3, 2008
  23. Johannes SchindelinNov 1, 2008
  24. Theodore TsoOct 30, 2008
  25. Pierre HabouzitOct 30, 2008
  26. Theodore TsoOct 30, 2008
  27. Pierre HabouzitOct 30, 2008
  28. Sam VilainOct 30, 2008
  29. Nicolas PitreOct 30, 2008
  30. Junio C HamanoNov 2, 2008
  31. Theodore TsoNov 2, 2008
  32. Andreas EricssonOct 30, 2008
  33. Elijah NewrenNov 1, 2008
  34. Matthieu MoyOct 30, 2008
  35. Nicolas PitreOct 30, 2008
  36. Pierre HabouzitOct 30, 2008
  37. Nicolas PitreOct 30, 2008
  38. Sam VilainOct 30, 2008
  39. Junio C HamanoNov 2, 2008
  40. Sam VilainNov 3, 2008
  41. Elijah NewrenNov 1, 2008
  42. Sam VilainOct 30, 2008
  43. Theodore TsoOct 30, 2008
  44. Elijah NewrenNov 1, 2008
  45. Theodore TsoNov 2, 2008
  46. Elijah NewrenNov 2, 2008
  47. Elijah NewrenNov 1, 2008
  48. Junio C HamanoNov 2, 2008
  49. Elijah NewrenNov 1, 2008

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.