Re: reset doesn't reset a revert?
- From
Adam Brewster <adambrewster@gmail.com>
- Date
- Oct 4, 2009, 18:37 UTC
- Message-ID
- <c376da900910041137v6766de4u1419a8209751dcb9@mail.gmail.com>
- In-Reply-To
- <98300251CB1D46A0B635B4495138C3A7@teddy>
Show 6 quoted lines
> > E:\lucru\git\k>git revert HEAD~ > fatal: Cannot revert a root commit > > #Does anyone know what does this mean? So I've tried with HEAD^ instead. >
Git revert isn't like svn revert. GIt revert creates a new commit off of the HEAD that introduces a change that's the opposite of the change introduced in the commit you specify. The first commit in a repository doesn't introduce any change because there's no previous commit.
Like it says, you can't revert the first commit in the history.
Show 12 quoted lines
> E:\lucru\git\k>git revert HEAD^ > More? > More? > Finished one revert. > [master 1beba20] Revert "Added baz to file.txt" > 1 files changed, 0 insertions(+), 1 deletions(-) > > # What should I respond to the questions More? > #I've seen that no matter what I type, it adds to the "HEAD" and tells that > that commit can't be found, so I just pressed enter. > >
It seems the caret is special to the windows command prompt. I don't know what it does, but a line of nonsense that ends in ^ causes the More? More? response you described. Try quoting the argument so your shell doesn't mangle it.
> > #And it seems that not only the repository was changed, but the working > directory also. Is it correct? >
That's how revert usually works,
Show 17 quoted lines
> #Well, now let's say I discovered that this new commit was an error and I > want to reset it. > #And I used HEAD^ because HEAD~ didn't work with revert. > > E:\lucru\git\k>git reset HEAD^ > More? > More? > E:\lucru\git\k>git log --pretty=format:"%s %h" > WARNING: terminal is not fully functional > Revert "Added baz to file.txt" 1beba20 > Added baz to file.txt fabd2f2 > First commit e969cd5 > (END) > > #Well, git reset didn't reset the latest commit. > #Does anyone know why or what I am doing wrong? >
I don't know what the ^ means, but I'm guessing it's not getting passed to git. I'm guessing what you really did is `git reset HEAD` which clears the index but doesn't undo any commits.
Show 16 quoted lines
> E:\lucru\git\k>git status > # On branch master > nothing to commit (working directory clean) > E:\lucru\git\k>git reset HEAD~ > file.txt: locally modified > E:\lucru\git\k>git log --pretty=format:"%s %h" > WARNING: terminal is not fully functional > Added baz to file.txt fabd2f2 > First commit e969cd5 > (END) > > #This time git reset resetted the latest HEAD. > #It seems that git reset wants the HEAD~ commit, while git revert wants the > HEAD^ commit. Do you know why (or can I find an explanation for this > somewhere)? >
Windows' command shell sucks. I don't use it. I don't recommend it. Try Cygwin. Or PuTTYcyg.
Show 7 quoted lines
> E:\lucru\git\k>type file.txt > foo > bar > > #However, git reset modified just the repository and not the working > directory. >
git reset has three modes. --hard, --soft, and --mixed. If you weren't using windows' shell you could type man git-reset to find out about them. Try googling git reset. Basically git reset doesn't mess with your working copy files unless you ask it to.
Show 6 quoted lines
> I added the line baz in the file file.txt, commited this change and then > reverted to the previous commit. This has also deleted the line "baz" from > the file. > Then I resetted the last commit (the revert), however the line "baz" didn't > appear in the file. >
Reset and revert are very different commands. Make sure you understand the difference.
Adam