public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Theodore Tso <tytso@mit•edu>
To: Junio C Hamano <gitster@pobox•com>
Cc: Brandon Casey <casey@nrlssc•navy.mil>,
	David Jeske <jeske@google•com>, Jakub Narebski <jnareb@gmail•com>,
	Boaz Harrosh <bharrosh@panasas•com>,
	git@vger•kernel.org
Subject: Re: why is git destructive by default? (i suggest it not be!)
Date: Tue, 24 Jun 2008 22:26:10 -0400	[thread overview]
Message-ID: <20080625022610.GB20361@mit.edu> (raw)
In-Reply-To: <7vod5qa0tu.fsf@gitster.siamese.dyndns.org>

On Tue, Jun 24, 2008 at 04:07:57PM -0700, Junio C Hamano wrote:
> > Instead, I've just learned to be careful and my use of git reset
> > --hard is mainly for historical reasons.
> 
> This makes it sound as if avoiding "reset --hard" is a good thing, but I
> do not understand why.

Well, it was Brandon Casey who was asserting that git reset --hard was
evil, which I generally don't agree with.  I do use workflows that use
it a fair amount, usually because its more convenient to type "git
checkout <foo>; git reset --hard <baz>" than something involving "git
update-ref refs/heads/<foo> <baz>".  The former has more characters
than the latter, and involves more disk I/O since it mutates the
working directory; but it's something about needing to type
"refs/heads/" such that I generally tend to type "git checkout....
git reset".  I can't explain why; maybe it's just psychological.

The reason why I've been thinking that I should change my shell script
from:

	git checkout integration
	git reset --hard <foo>

to:

	git update-ref ref/heads/integration HEAD
	git checkout integration

Is actually because the first tends to touch more files in the working
directory than the second (because if the integration branch is a week
or two old, the git checkout unwinds the global state by two weeks,
and then the git reset --hard has to bring the state back up to
recentcy; the second generally involves a smaller set of files
changing).  That's a very minor point, granted.

> The reason you have the diff-index check in the second sequence is because
> update-ref does not have the "local changes" check either.  You could have
> used the same diff-index check in front of "reset --hard".

Definitely true.  The reason why I don't have this check is because
I'm generally careful and I run a "git stat" to make sure there are no
local changes in the tree before I run the script.

> Moreover, in your original sequence above, doesn't "git checkout
> integration" list your local changes when you have any, and wouldn't that
> be a clue enough that the next "reset --hard origin" would discard them?

... because it's in a shell script; being fundamentally lazy, instead
of typing that sequence over and over again, I've scripted it.  :-)

	     	  	 	     	   - Ted

  reply	other threads:[~2008-06-25  2:27 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <willow-jeske-01l5PFjPFEDjCfzf-01l5V7wbFEDjCX7V>
     [not found] ` <jeske@willow=01l5V7waFEDjChmh>
2008-06-24  1:47   ` why is git destructive by default? (i suggest it not be!) David Jeske
2008-06-24  1:47   ` David Jeske
2008-06-24 17:11     ` Boaz Harrosh
2008-06-24 17:19       ` Boaz Harrosh
2008-06-24 19:08         ` Jakub Narebski
2008-06-24 20:04           ` David Jeske
2008-06-24 21:42             ` Brandon Casey
2008-06-24 22:13               ` David Jeske
2008-06-24 22:13               ` David Jeske
2008-06-24 22:54               ` Theodore Tso
2008-06-24 23:07                 ` Junio C Hamano
2008-06-25  2:26                   ` Theodore Tso [this message]
2008-06-25  8:58                     ` Jakub Narebski
2008-06-25  9:14                       ` Junio C Hamano
2008-06-26 15:13                     ` Brandon Casey
2008-06-24 22:21             ` Steven Walter
2008-06-24 22:21               ` [PATCH] cmd_reset: don't trash uncommitted changes unless told to Steven Walter
2008-06-24 22:31                 ` Junio C Hamano
2008-06-25  9:12                   ` Boaz Harrosh
2008-06-25  9:23                     ` Junio C Hamano
2008-06-25  9:59                       ` Boaz Harrosh
2008-06-25 10:16                     ` Johannes Schindelin
2008-06-25 10:24                       ` Matthias Kestenholz
2008-06-25 10:46                         ` Anton Gladkov
2008-06-25 12:33                           ` Johannes Schindelin
2008-06-25 14:49                           ` [PATCH] cmd_reset: don't trash uncommitted changes unless toldto Craig L. Ching
2008-06-25 15:18                             ` Anton Gladkov
2008-06-25 10:41                       ` [PATCH] cmd_reset: don't trash uncommitted changes unless told to Johannes Sixt
2008-06-25 12:38                         ` Johannes Schindelin
2008-06-25 13:51                           ` Theodore Tso
2008-06-25 17:22                             ` Junio C Hamano
2008-06-25 19:50                               ` Theodore Tso
2008-06-25 20:04                                 ` Avery Pennarun
2008-06-25 20:11                                   ` Junio C Hamano
2008-06-25 20:22                                     ` Avery Pennarun
2008-06-25 20:48                                       ` Junio C Hamano
2008-06-25 20:58                                         ` Avery Pennarun
2008-06-25 21:24                                           ` Re* " Junio C Hamano
2008-06-25 21:34                                             ` Junio C Hamano
2008-06-26  1:26                                             ` Junio C Hamano
2008-06-25 20:37                                     ` Steven Walter
2008-06-25 20:38                                   ` Theodore Tso
2008-06-25 20:50                                     ` Junio C Hamano
2008-06-25 21:05                                       ` Theodore Tso
2008-06-25 21:35                                         ` Junio C Hamano
2008-06-26  5:16                                           ` Junio C Hamano
     [not found]                                           ` <20080627193325.6117@nanako3.lavabit.com>
2008-06-27 22:11                                             ` Junio C Hamano
2008-06-28  0:06                                               ` しらいしななこ
2008-06-28 22:32                                                 ` しらいしななこ
2008-06-29  8:56                                                   ` Junio C Hamano
2008-06-25 22:44                                     ` Petr Baudis
2008-06-26  1:59                                       ` Johannes Schindelin
2008-06-25 20:09                                 ` Junio C Hamano
2008-06-26 11:55                               ` Björn Steinbrink
2008-06-26 12:07                                 ` Johannes Schindelin
2008-06-26 12:35                                   ` Björn Steinbrink
2008-06-26 15:55                                   ` Avery Pennarun
2008-06-26 17:49                                     ` Johannes Schindelin
2008-06-26 12:01                             ` Matthieu Moy
2008-06-26 12:09                               ` Johannes Schindelin
2008-06-26 12:23                                 ` David Kastrup
2008-06-25 13:19                     ` Ian Hilt
2008-06-26  5:31                     ` Andreas Ericsson
2008-06-26 16:15                       ` Jon Loeliger
2008-06-25  5:29                 ` Johannes Gilger
2008-06-24 20:04           ` why is git destructive by default? (i suggest it not be!) David Jeske
2008-06-25  8:57           ` Boaz Harrosh
2008-06-24 18:18       ` Brandon Casey
     [not found]   ` <willow-jeske-01l5PFjPFEDjCfzf-01l5V7wbFEDjCX7V@videotron.ca>
     [not found]     ` <willow-jeske-01l5cKsCFEDjC=91MX@videotron.ca>
2008-06-24  2:17       ` Nicolas Pitre
2008-06-24  3:18         ` David Jeske
2008-06-24  8:14           ` Lea Wiemann
2008-06-24  3:18         ` David Jeske
     [not found]         ` <willow-jeske-01l5PFjPFEDjCfzf-01l5ciVtFEDjCaD9@videotron.ca>
     [not found]           ` <willow-jeske-01l5e9cgFEDjCh3F@videotron.ca>
2008-06-24  4:03             ` Nicolas Pitre
2008-06-24  4:40               ` David Jeske
2008-06-24  5:24                 ` Jan Krüger
2008-06-24  4:40               ` David Jeske
     [not found]               ` <1978205964779154253@unknownmsgid>
2008-06-24  5:20                 ` Avery Pennarun
2008-06-24  6:35                   ` David Jeske
2008-06-24  7:24                     ` Jeff King
2008-06-24  7:31                       ` David Jeske
2008-06-24  8:16                         ` Jeff King
2008-06-24  8:30                           ` David Jeske
2008-06-24  9:39                             ` Jakub Narebski
2008-06-24  8:30                           ` David Jeske
     [not found]                           ` <willow-jeske-01l5PFjPFEDjCfzf-01l5kv6TFEDjCj8S@brm-avmta-1.central.sun.com>
     [not found]                             ` <willow-jeske-01l5lTEoFEDjCVta@brm-avmta-1.central.sun.com>
2008-06-24 10:01                               ` Fedor Sergeev
2008-06-24 10:24                                 ` David Jeske
2008-06-24 13:13                                   ` Theodore Tso
2008-06-24  7:31                       ` David Jeske
2008-06-24  6:35                   ` David Jeske
2008-06-24  7:54                   ` Jakub Narebski
2008-06-24  8:08                     ` David Jeske
2008-06-24  8:08                     ` David Jeske
2008-06-24 11:22                       ` Jakub Narebski
2008-06-24 11:29                         ` David Jeske
2008-06-24 12:21                           ` Jakub Narebski
2008-06-24 11:29                         ` David Jeske
2008-06-24 12:19                           ` Rogan Dawes
2008-06-24 12:35                             ` Johannes Gilger
2008-06-24 12:46                               ` Rogan Dawes
2008-06-24 12:13                         ` Jakub Narebski
2008-06-24  4:59 Teemu Likonen
     [not found] ` <e80d075a0806232201o3933d154he2b570986604c30a@mail.gmail.com>
2008-06-24  5:43   ` Teemu Likonen
  -- strict thread matches above, loose matches on Subject: below --
2008-06-24  8:35 Björn Steinbrink
     [not found] <willow-jeske-01l5PFjPFEDjCfzf-01l5oEswFEDjCZBN>
     [not found] ` <willow-jeske-01l5oEsvFEDjCjRW>
2008-06-24 10:42   ` David Jeske
2008-06-24 10:42   ` David Jeske
2008-06-24 15:29     ` Brandon Casey
2008-06-24 16:41       ` David Jeske
2008-06-24 16:41       ` David Jeske
2008-06-24 18:55         ` Brandon Casey
2008-06-25 12:20         ` Matthieu Moy
2008-06-25 17:56         ` Jing Xue
2008-06-24 12:21 Olivier Galibert
2008-06-25 18:06 Dmitry Potapov

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=20080625022610.GB20361@mit.edu \
    --to=tytso@mit$(echo .)edu \
    --cc=bharrosh@panasas$(echo .)com \
    --cc=casey@nrlssc$(echo .)navy.mil \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitster@pobox$(echo .)com \
    --cc=jeske@google$(echo .)com \
    --cc=jnareb@gmail$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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