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

Re: "git checkout" safety feature

From
Jeff King <peff@peff.net>
Date
Nov 5, 2018, 06:51 UTC
Message-ID
<20181105065136.GN25864@sigill.intra.peff.net>
In-Reply-To
<fdedc47b-8661-9451-b4ef-12ec6bd13c04@urlichs.de>
On Mon, Nov 05, 2018 at 07:24:42AM +0100, Matthias Urlichs wrote:
Show 8 quoted lines
> Hi,
> > "git checkout <commit> <pathspec>" is a feature to overwrite local
> > changes.  It is what you use when you make a mess editing the files
> > and want to go back to a known state.  Why should that feature be
> > destroyed?
> 
> Not destroyed, but optionally made finger-fumble-save – like "alias rm
> rm -i".

There are a couple of destructive commands left in Git (e.g., this one, and "git reset --hard" is another). I didn't dig up archive references, but the topic of safety valves has come up many times over the years. The discussion usually ends with the notion that instead of warning that the operation is destructive (because that gets annoying when its purpose is to be destructive), we should make it possible to undo a mistake.

So in this case, that would mean saving the working tree file to a blob before we obliterate it.

See similar discussion in:
  https://public-inbox.org/git/CACsJy8C5QOLvg4pzy_pThQoyGh9ohdeVHXsuYwQHQypn3oBxkw@mail.gmail.com/
for example.
-Peff
Previous: Matthias UrlichsNext: Duy Nguyen
Message 4 of 5 in “"git checkout" safety feature”
  1. Matthias UrlichsNov 4, 2018
  2. Junio C HamanoNov 5, 2018
  3. Matthias UrlichsNov 5, 2018
  4. Jeff KingNov 5, 2018
  5. Duy NguyenNov 5, 2018

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.