# Newbie problem

3 messages from 2007-07-28 to 2007-07-28. Participants: Insitu, Junio C Hamano.
Thread: https://gitlist.dev/t/9272

## Insitu, 2007-07-28 07:20

Subject: Newbie problem
Message-ID: <87vec5vvt5.fsf@osquare.oqube.com>
URL: https://gitlist.dev/e/87vec5vvt5.fsf%40osquare.oqube.com

```
Hello, 
I am new to git and gave it a try to version my home dir and
synchronize it between two machines. It works but I think I did some
mistakes in my setup which make its usability non optimal: 
 - push/pull operations need remote address
 - I didn't set up any branch

Here is what I did (lap is for operations on laptop, pc on desktop):
lap> git init
lap> git add ...
lap> git commit ...
lap> scp .git pc:
lap> mv .git git-init
pc> git checkout .
pc> git commit ...
lap> git clone  -n --bare --reference git-init/  ssh://pc/~/.git
lap> git checkout .
lap> git add ...
lap> git commit

Now, I want to be able to do:
lap> git push
or
lap> git pull

instead of 
lap> git push ssh://pc/~/.git

I think I need to reconfigure my remote branches/origin on laptop but
don't want ot break everything.

Help appreciated,
-- 
OQube < software engineering \ génie logiciel >
Arnaud Bailly, Dr.
\web> http://www.oqube.com

```

## Junio C Hamano, 2007-07-28 08:01

Subject: Re: Newbie problem
Message-ID: <7vmyxht0r6.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vmyxht0r6.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <87vec5vvt5.fsf@osquare.oqube.com>

```
Insitu <abailly@oqube.com> writes:

> Now, I want to be able to do:
> lap> git push
> or
> lap> git pull
>
> instead of 
> lap> git push ssh://pc/~/.git
>
> I think I need to reconfigure my remote branches/origin on laptop but
> don't want ot break everything.

The necessary syntax and configuration files are all documented
fairly detailed in the manual pages, but it is a tad hard to
know where to look:

    http://www.kernel.org/pub/software/scm/git/docs/git-fetch.html
    http://www.kernel.org/pub/software/scm/git/docs/git-push.html
    http://www.kernel.org/pub/software/scm/git/docs/git-config.html

If you use recent enough git (post 1.5.0), the recommended way
to keep two boxes in sync is:

On mothership box, in .git/config:

 [remote "origin"]
     url = satellite:.git/
     fetch = +refs/heads/*:refs/remotes/origin/*
     push = refs/heads/*:refs/remotes/origin/*
 [branch "master"]
     remote = origin
     merge = refs/heads/master

On satellite laptop, in .git/config:

 [remote "origin"]
     url = mothership:.git/
     fetch = +refs/heads/*:refs/remotes/origin/*
     push = refs/heads/*:refs/remotes/origin/*
 [branch "master"]
     remote = origin
     merge = refs/heads/master

Then, whenever you start working on the satellite:

	$ git pull

which, while you are on "master" branch, would use 'origin' as
the default remote (thanks to branch.master.remote configuration),
store the copy of mothership's branches in refs/remotes/origin/,
and merges the "master" branch obtained from the mothership to
your "master" branch on the satellite [*1*].  

When you are done working on the satellite:

	$ git push

will push to "origin" by default, which would push all your
branches (thanks to remote.origin.push configuration) to
mothership's refs/remotes/origin/.

When you go back to the mothership, your work done on the
satellite are already pushed into the refs/remote/origin/
tracking branches, so you can merge them in (you can do this
after shutting down your satellite laptop, which is the beauty
of this setup):

	$ git merge origin/master

to merge in the changes you did on the satellite.


[Footnote]

*1* If you prefer to keep a straight history, you may want to
    fetch+rebase instead of pull which is a fetch+merge, in
    which case this step will be:

	$ git fetch
        $ git rebase origin/master

```

## Insitu, 2007-07-28 08:50

Subject: Re: Newbie problem
Message-ID: <87myxgx683.fsf@osquare.oqube.com>
URL: https://gitlist.dev/e/87myxgx683.fsf%40osquare.oqube.com
In-Reply-To: <7vmyxht0r6.fsf@assigned-by-dhcp.cox.net>

```
Junio C Hamano <gitster@pobox.com> writes:

>
>  [remote "origin"]
>      url = satellite:.git/
>      fetch = +refs/heads/*:refs/remotes/origin/*
>      push = refs/heads/*:refs/remotes/origin/*
>  [branch "master"]
>      remote = origin
>      merge = refs/heads/master
>
> On satellite laptop, in .git/config:
>
>  [remote "origin"]
>      url = mothership:.git/
>      fetch = +refs/heads/*:refs/remotes/origin/*
>      push = refs/heads/*:refs/remotes/origin/*
>  [branch "master"]
>      remote = origin
>      merge = refs/heads/master
>

Thanks a lot for all these details ! 

Yes, I also find Git very well
documented (maybe too much docuemented :) )  and could have come to
the settings with info from the various man pages. But much less
quickly of course.

My question is: can I do this right now that my repositories are up
and running ? 

Regards,
-- 
OQube < software engineering \ génie logiciel >
Arnaud Bailly, Dr.
\web> http://www.oqube.com

```
