Newbie git experience: resetting local git tree back to an
mike at codeweavers.com
Sat Apr 29 23:36:04 CDT 2006
Dan Kegel wrote:
> I gather the right command for this is "git reset", so I read the man page.
> It wants a "commit-ish" as the argument. (Boy, that's helpful.)
> Looking at that patch, I saw its filename was an md5 sum, so I figured
> maybe that was the "commit-ish", and tried
> $ git reset --soft b32ae7a40c601427fea7cb9f145138221030f869
> fatal: Needed a single revision
You can get a "commit-ish" SHA-1 IDs for your tree using "git
A commit is an SHA1 ID of the commit it was based off, the patch
committer's name+email, the patch author's name+email, the time of the
commit and the root directory of the tree committed.
Since James's tree had him as the committer, and my tree has me as the
committer, the SHA1 IDs won't be the same. If I were to pull/merge his
tree, then they would be.
> $ git reset --soft HEAD~8
> And voila, it worked; "git log" now showed the desired change as
> the latest!
> (Whew. I thought I was going to drown in man pages for a while there.)
> Annoyingly, "make" did nothing after this, but I knew the changes
> I wanted to revert were all in one DLL, so I just removed that DLL's
> .o files and ran make again.
"git reset" as used above will only modify the commit history. "git
diff" should now show you the diff between the old HEAD and the old HEAD~8.
You can use "git reset --hard" to change the checked out tree too, but
it will reset it to the point you specify, and you will lose any changes
not committed at that point.
So, to reset your whole tree (commit log and checked out files) to the
state it was just after the previous commit, you do:
git reset --hard HEAD^
> I feel a bit more comfortable with git now!
Great! It's a bit of a hard slog at first, but as more people get used
to GIT, then it should be easier to get help.
You've probably see this already, but incase others haven't the Wine
Wiki has a page on GIT here:
More information about the wine-devel