Subject: Re: Reset by checkout?

From: Kevin Bracey <[email-masked]>
Date: Sat, 31 May 2014 10:27:04 +0300

On 31/05/2014 08:46, Atsushi Nakagawa wrote:
>    `git checkout -B <current-branch-name> <tree-ish>`
>
> This is such an useful notion that I can fathom why there isn't a better,
> first-tier, alternative.q
I'm 100% in agreement. "Reset current branch to X" is an extremely 
common operation, and I use this all the time. But having to actually 
name the current branch is silly, and like you, I'm prone to swapping 
the parameters.

I guess in theory using "checkout" allows fancier extra options like 
"--merge" and "--patch", but I don't think I've ever used those with 
checkout, let alone this mode, where I really do just want a "reset", 
with safety checks.

The original "git reset --hard" used to be a pretty top-level command. 
It was used for aborting merges in particular. But I think it now stands 
out as being one of the only really dangerous porcelain commands, and I 
can't think of any real workflow it's still useful for. Maybe it could 
now be modified to warn and require "-f" to overwrite anything in the 
working tree?

While digging into this, it seems "git reset --keep" is actually pretty 
close to "git checkout -B <current branch>". It certainly won't lose 
your workspace file, but unlike checkout it /does /forget what you've 
staged, which could be annoying. Maybe that could be modified to keep 
the index too?

(I like your alias.become - might try that).

Kevin