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

Re: Suggestion: make git checkout safer

From
Stefan Beller <sbeller@google.com>
Date
Jun 3, 2015, 18:14 UTC
Message-ID
<CAGZ79kYv5Xgfv=3KD0oPrUsJD2Yw-EHu7U=_35FZTm4Rp5hbBA@mail.gmail.com>
In-Reply-To
<004801d09e25$a339b0f0$e9ad12d0$@nexbridge.com>

Maybe the expectation comes from the existing warnings when checking out branches?

    $ mkdir tmp && cd tmp
    $ git init
    $ echo Hello >foo
    $ git add foo
    $ git commit -am "Hello"
    $ git branch next
    $ echo "world" >bar
    $ git add bar
    $ git commit -a -m "World"
    $ git checkout test
      # no problem so far, just going back one commit on anther branch
    $ echo Kitty >bar
    $ git checkout master # now we get it:
    error: The following untracked working tree files would be
overwritten by checkout:
    bar
    Please move or remove them before you can switch branches.
    Aborting

So in one mode, we do actually warn about contents going missing, and the other mode is designed to actually make things go missing without any warning.

So maybe the checkout command is *too powerful* ? Looking at the man page:
    Updates files in the working tree to match the version in the index or the
    specified tree. If no paths are given, git checkout will also update HEAD
    to set the specified branch as the current branch.

we're mixing two different tasks here anyway. "Updating files in the work tree" can be understood as "throwing away all changes until you're back at a specified safe point". If I were to come up with a name for such an action it's maybe "reset" or "reset-file(s)". Though git reset is taken already and does different things. "reset" sounds as if stuff may go missing, so anyone who types "reset", (even without exactly understanding what it does, would assume it is as safe as typing "rm" probably.

 And "also update HEAD" can be understood as "switch to another branch",
so if I were to invent a new porcelain command for such functionality it may be
called "git switch-branch". And typing switch-branch would be expected
to carry all
the warnings (no updating files in the work tree, when in danger of
losing its content)
Previous: Randall S. BeckerNext: Ed Avis
Message 10 of 28 in “Suggestion: make git checkout safer”
  1. Ed AvisJun 3, 2015
  2. Jeff KingJun 3, 2015
  3. Ed AvisJun 3, 2015
  4. Jeff KingJun 3, 2015
  5. Ed AvisJun 3, 2015
  6. Junio C HamanoJun 3, 2015
  7. Randall S. BeckerJun 3, 2015
  8. Junio C HamanoJun 3, 2015
  9. Randall S. BeckerJun 3, 2015
  10. Stefan BellerJun 3, 2015
  11. Ed AvisJun 4, 2015
  12. Ed AvisJun 4, 2015
  13. Torsten BögershausenJun 3, 2015
  14. Kevin DaudtJun 3, 2015
  15. Ed AvisJun 4, 2015
  16. Torsten BögershausenJun 4, 2015
  17. Ed AvisJun 5, 2015
  18. Duy NguyenJun 5, 2015
  19. Eric SunshineJun 5, 2015
  20. Junio C HamanoJun 5, 2015
  21. Ed AvisJun 5, 2015
  22. Eric SunshineJun 5, 2015
  23. Philip OakleyJun 3, 2015
  24. Junio C HamanoJun 3, 2015
  25. Jeff KingJun 3, 2015
  26. Randall S. BeckerJun 3, 2015
  27. Junio C HamanoJun 3, 2015
  28. John SzakmeisterJun 4, 2015

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.