git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: new to git

From
JFJ. Bruce Fields <bfields@fieldses.org>
Date
Aug 27, 2007, 20:11 UTC
Message-ID
<20070827201131.GK3118@fieldses.org>
In-Reply-To
<46D32973.8030104@krose.org>
On Mon, Aug 27, 2007 at 03:43:47PM -0400, Kyle Rose wrote:
> 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:

I think I tried to cover most of this in the user-manual (http://www.kernel.org/pub/software/scm/git/docs/user-manual.html has the latest version, or it's in Documentation/) but some of it may be harder to find than it should be.

Show 17 quoted lines
> (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

Git caches the value of the remote's "master" in refs/remotes/origin/master. That's the thing that's getting updated; you can actually

	cat .git/refs/remotes/origin/master
before and after you'll see that it got updated from 7cf088c to d344498.

I think newer versions of git actually update that "remote-tracking branch head" on the push as well, which would prevent you from getting the message since by the time of the pull that thing will already have been updated.

> (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?
	git checkout some_revision path/to/filename
> Is there a way to do the equivalent of
> a p4 print foo@some_revision?
I don't know p4, but maybe you're looking for
	git show some_revision:foo
Show 12 quoted lines
> (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

The latter should forcibly reset the branch head "foo" to point at the same commit as "master". The former tries to do a merge between the two.

In the case where master is a descendant of foo (so there's no commits in foo that isn't already in master), the two should do the same thing.

> (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?

Maybe you want "man git-remote"? Or see "git-config" for more general configuration.

But editing .git/config file directly is often simplest, and won't cause any problem.

--b.
Previous: Kyle RoseNext: Andreas Ericsson
Message 2 of 8 in “new to git”
  1. Kyle RoseAug 27, 2007
  2. J. Bruce FieldsAug 27, 2007
  3. Andreas EricssonAug 27, 2007
  4. Kyle RoseAug 27, 2007
  5. Junio C HamanoAug 27, 2007
  6. Andreas EricssonAug 27, 2007
  7. Jan HudecSep 5, 2007
  8. Junio C HamanoSep 5, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.