From: Andreas Ericsson Date: Thu, 26 Jun 2008 05:31:53 GMT Subject: Re: [PATCH] cmd_reset: don't trash uncommitted changes unless told to Message-ID: <486329C9.8020801@op5.se> In-Reply-To: <48620C1A.6000509@panasas.com> Boaz Harrosh wrote: > Junio C Hamano wrote: >> Steven Walter writes: >> >>> @@ -225,6 +243,10 @@ int cmd_reset(int argc, const char **argv, const char *prefix) >>> if (reset_type == HARD && is_bare_repository()) >>> die("hard reset makes no sense in a bare repository"); >>> >>> + if (reset_type == HARD && !force && index_is_dirty()) { >>> + die("Uncommitted changes; re-run with -f to trash them"); >>> + } >>> + >> Please don't. With your change, does the testsuite even pass? >> >> "reset --hard" has *ALWAYS* meant to be destructive --- discarding >> potential local cruft is the whole point of the operation. >> > > I was under the impression that --hard means working-directory-also > as opposed to tree-and-index-only. Nothing to do with > destructive-discarding. If it is then something is missing. > I need 2 distinct functions. You combine to functions under > one command. > >> Learn the lingo, and get over it. >> > > I did lern the lingo and got bitten. I wanted to do one thing > also got the other one. > > there is: > git-reset --clean - destructive-discarding any local changes > git-reset --hard - move tree index and working directory to new head > > How can I separate between them, Please > There is a "--hard" after one of them. It reads like this: git reset --hard ;# move current branch to random point in history # discarding working tree and index state git reset --mixed ;# move current branch to random point in history # discard the index but keep the working tree git reset --soft ;# move current branch to random point in history, # leaving index and working tree intact It's under OPTIONS in the man-page. --mixed is default. -- Andreas Ericsson andreas.ericsson@op5.se OP5 AB www.op5.se Tel: +46 8-230225 Fax: +46 8-230231