From: Kevin Bracey Date: Sat, 31 May 2014 07:27:04 GMT Subject: Re: Reset by checkout? Message-ID: <53898448.8040105@bracey.fi> In-Reply-To: <20140531144610.754B.B013761@chejz.com> On 31/05/2014 08:46, Atsushi Nakagawa wrote: > `git checkout -B ` > > 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 ". 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