Subject: new to git

From: Kyle Rose <[email-masked]>
Date: Mon, 27 Aug 2007 15:43:47 -0400

After many years of dissatisfaction with the limitations of CVS, and
after getting fed up with the complexity of configuring and maintaining
a SVN setup, I just started using git for my own personal projects.  I
have to say it's quite nice and fits the UNIX philosophy well: fast,
simple, powerful.

I've been playing with it for a few weeks and generally understand what
is going on, but I do have a few usage questions that I couldn't find
answered in the docs:

(1) Let's say I:

git clone something
git branch foo
git checkout foo
<make some changes>
git commit -a
git checkout master
git pull . foo
git push
git pull

what is actually happening?  The pull appears to do something (i.e., I get:

* refs/remotes/origin/master: fast forward to branch 'master' of
/home/krose/git-repository/baz/
  old..new: 7cf088c..d344f98

), but makes no changes locally since I have the latest revision. 
Another subsequent git pull does, in fact, say everything is up to date.

(2) Any way to disable this warning:

Warning: No merge candidate found because value of config option
         "branch.local.merge" does not match any remote branch fetched.

(3) I notice I can't reset --hard a single file.  So, if I want to
revert a single file to some revision, blowing away my changes, what is
the accepted way of doing this?  Is there a way to do the equivalent of
a p4 print foo@some_revision?

(4) I'm still not clear on when a dst should and should not be used in a
refspec.  It appears that one can only do non-fast forward updates to
the branch that is checked out (which makes sense, since you may need to
resolve), but other than that, what is the difference between

git checkout foo
git pull . master

and

git checkout master
git push . master:foo

?

(5) Are there any tools for managing some of the metadata (e.g., the
origin URL) or is it expected that one edit it directly?

Thanks for all your work on this: git fills a need I didn't know I had
until I actually found myself using it: a completely decentralized patch
management system.

Kyle