From: Ed Avis <eda@waniasset.com>
To: git@vger.kernel.org
Subject: Re: Suggestion: make git checkout safer
Date: Wed, 3 Jun 2015 09:55:05 +0000 (UTC) [thread overview]
Message-ID: <loom.20150603T114527-151@post.gmane.org> (raw)
In-Reply-To: 20150603093514.GF32000@peff.net
Jeff King <peff <at> peff.net> writes:
>I would say the more "usual" way to use checkout like this
>is to give specific paths. I.e., run "git status", say "oh, I need to
>restore the contents of 'foo', but not 'bar'", and run "git checkout
>foo". That works regardless of the type of change to "foo" and "bar".
That seems fine - a specific file is named and you clearly want to alter
the contents of that file. By analogy, 'rm foo' will silently delete it,
but if you specify a directory to delete recursively you need the -r flag.
OK, it's not a perfect analogy because the purpose of rm is to delete data
and nothing else ;-).
If my personal experience is anything to go by, newcomers may fall into the
habit of running 'git checkout .' to restore missing files. In the old days
I would often delete a file and then run 'cvs update' or 'svn update' to
restore it. That would fetch a fresh copy from the repository, and while
it might do some kind of diff/patch operation on modified files, it would
not simply throw away local changes.
'git checkout .' seems like the analogous command, but it has much sharper
edges. I still think it should be safer by default, but if you decide
against that then perhaps you need to create some way to restore missing
files and not overwrite others. 'git checkout --no-overwrite'? Then it
could even be added to .gitconfig as the default for those who like it.
I have to say that as a newcomer to git I do not like the idea of creating
a special undo log for git. It would just be yet another concept to learn
and another thing to add to the list of 'where is git hiding my data this
time?'. And the time when it would be useful - after some bungled operation
that lost data - is just the time when the user is already confused and
adding another semi-hidden stash of objects to the mix would befuddle them
further. If there is to be a backup made of local changes that get lost,
and I agree it is a good idea, then it should be something stupid and
completely obvious, such as saving the old file as 'foo.before_checkout.1'.
--
Ed Avis <eda@waniasset.com>
next prev parent reply other threads:[~2015-06-03 9:55 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-03 8:50 Suggestion: make git checkout safer Ed Avis
2015-06-03 9:06 ` Jeff King
2015-06-03 9:21 ` Ed Avis
2015-06-03 9:35 ` Jeff King
2015-06-03 9:55 ` Ed Avis [this message]
2015-06-03 17:35 ` Junio C Hamano
2015-06-03 17:49 ` Randall S. Becker
2015-06-03 18:11 ` Junio C Hamano
2015-06-03 18:18 ` Randall S. Becker
2015-06-03 18:14 ` Stefan Beller
2015-06-04 10:47 ` Ed Avis
2015-06-04 11:02 ` Ed Avis
2015-06-03 19:26 ` Torsten Bögershausen
2015-06-03 19:47 ` Kevin Daudt
2015-06-04 11:00 ` Ed Avis
2015-06-04 20:14 ` Torsten Bögershausen
2015-06-05 9:32 ` Ed Avis
2015-06-05 10:49 ` Duy Nguyen
2015-06-05 17:44 ` Eric Sunshine
2015-06-05 18:03 ` Junio C Hamano
2015-06-05 18:46 ` Ed Avis
2015-06-05 18:37 ` Eric Sunshine
2015-06-03 20:12 ` Philip Oakley
2015-06-03 17:32 ` Junio C Hamano
2015-06-03 19:06 ` Jeff King
2015-06-03 19:24 ` Randall S. Becker
2015-06-03 21:29 ` Junio C Hamano
2015-06-04 9:01 ` John Szakmeister
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=loom.20150603T114527-151@post.gmane.org \
--to=eda@waniasset.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).