# Re: Newbie using git -- need a little help

2 messages from 2007-06-17 to 2007-06-17. Participants: Robert Smith, Thomas Glanzmann.
Thread: https://gitlist.dev/t/8633

## Robert Smith, 2007-06-17 20:06

Subject: Re: Newbie using git -- need a little help
Message-ID: <2218.85747.qm@web57401.mail.re1.yahoo.com>
URL: https://gitlist.dev/e/2218.85747.qm%40web57401.mail.re1.yahoo.com

```
Thanks for the quick reply.  I have a few questions regarding the infrastructure you described...

> When you push to your server, the repository is updated (that is the
> thing that is in .git) but your working tree isn't.

> So when you push to a repository that also has a working tree attached
> to it, you have to do a "git checkout" on the working tree. Or pull from
> the repository and not push to it.

Ahhh, that makes sense... :)

> Than I publish my project to the server without giving the repository at
> the server a working directory attached to it. A working directory is
> where you can edit files and commit changes locally, just in case I
> didn't introduce the term yet.

>         # This creates the repository _without_ the working tree on the server.
>         ssh 131.188.30.102 git --git-dir=/home/cip/adm/sithglan/work/repositories/private/astro.git init-db

The /home/cip/adm/sithglan/work/repositories/private/astro.git is simply a .git directory located on the "server", and it doesn't actually contain any working code (yet), right?

>         # This adds the remote origin to the config so that I don't have to
>         # type in the long repository path each time I am going to push or pull
>         # something.
>         git remote add origin 131.188.30.102:/home/cip/adm/sithglan/work/repositories/private/astro.git

So what this command is doing is telling git where the "origin" is -- on the remote server, correct?  Also, is the default protocol (since all you typed was 131.188.30.102:/.../astro.git) is SSH correct?
 
>         # Now I publish my stuff to the central repository. You need at least
>         # one commit in order to be able to do that.
>         git push origin master:master
> 
>         # I add a few lines to my config so that when I type in "git pull" it
>         #fetches the stuff and merges it with my local repositories master branch.
> 
>         "vim .git/config" and add the following lines:
> 
> [branch "master"]
>         remote = origin
>         merge = refs/heads/master
> EOF

I'm a little lost on what 'origin' refers to precisely.  Is origin considered the "root" of all the changes (the workspace as it was originally before any patches)?  Or is it a location for the working files?  You give a definition below in your e-mail but I'm still not completely sure what it is referring to.

>         # Now I can fetch back to see if everything works
>         git pull

Makes sense...let me give this a try.  :)
 
> Now I am fine the infrastructure is all set up. The next time I am going
> to access the project from a different machine I simply do:
> 
>        git pull 131.188.30.102:/home/cip/adm/sithglan/work/repositories/private/astro.git
> 
> And that's it. The origin and where it is going to merge stuff is set
> automatically up by git. Note: I use ssh (attached to a ssh-agent so that I
> don't have to passwords all the time I am doing a push or pull). I hope that
> helps you and didn't miss your original question. I just fly over your e-Mail
> and picked a few keywords to comment on.


Awesome...thanks, Thomas.  I'll tinker around with this a little more and see if I can get this working as wanted.

Thanks again.

- robert -




       
____________________________________________________________________________________
Yahoo! oneSearch: Finally, mobile search 
that gives answers, not web links. 
http://mobile.yahoo.com/mobileweb/onesearch?refer=1ONXIC

```

## Thomas Glanzmann, 2007-06-17 20:30

Subject: Re: Newbie using git -- need a little help
Message-ID: <20070617203046.GG21291@cip.informatik.uni-erlangen.de>
URL: https://gitlist.dev/e/20070617203046.GG21291%40cip.informatik.uni-erlangen.de
In-Reply-To: <2218.85747.qm@web57401.mail.re1.yahoo.com>

```
Hello Robert,

> The /home/cip/adm/sithglan/work/repositories/private/astro.git is
> simply a .git directory located on the "server", and it doesn't
> actually contain any working code (yet), right?

Right.

(faui02) [~/work/repositories/private/astro.git] ls
HEAD  branches/  config  description  hooks/  info/  objects/  refs/  remotes/

> So what this command is doing is telling git where the "origin" is --
> on the remote server, correct?  Also, is the default protocol (since
> all you typed was 131.188.30.102:/.../astro.git) is SSH correct?

The default protocol is git over ssh. And it adds a shorthand called
origin that points to the repository at the server you can now say:

        git push origin
        git pull origin

Since origin is the default, you can also say:

        git push
        git pull

Note when you do a "git clone ip:/path/to/dir.git", git will
automatically set up the reference to origin. You don't have to do it
yourself. In my initial example you had to do it yourself, because at
the time you started with the new project there was no origin because
you just started it.

> I'm a little lost on what 'origin' refers to precisely.  Is origin
> considered the "root" of all the changes (the workspace as it was
> originally before any patches)?  Or is it a location for the working
> files?  You give a definition below in your e-mail but I'm still not
> completely sure what it is referring to.

"origin" is a shorthand for the remote repository. If you say git pull
git fetches the objects that are reference in the remote repository by
the head "master" (by default) and puts that in a local file called
.git/refs/remotes/origin/master:

(faui02) [~/work/blastwave] ls -al .git/refs/remotes/origin/master
-rw-r--r-- 1 sithglan icipguru 41 Jun 14 18:35 .git/refs/remotes/origin/master
(faui02) [~/work/blastwave] cat !$
cat .git/refs/remotes/origin/master
50da5cf500b8b57e32720ffe80fbabaadd7c8c9f

After that it tries to merge that remote head into your local branches
head.  Most of the time that is .git/refs/heads/master

If you type in only "git fetch" it gets the objects but doesn't do any
merging.

So to answer your question. Origin is a copy of the repository you
pull/push by default. The objects of these tree are in your object store
but the actualy HEAD commit object is in the file I "cat" earlier in
this e-Mail.

        Thomas

```
