Re: How to jump between two repositories ...
- From
- g2 <gerald.gutierrez@gmail.com>
- Date
- Dec 5, 2007, 06:44 UTC
- Message-ID
- <33CB0252-20C7-4AF2-AEB3-2EAC20ED830B@gmail.com>
- In-Reply-To
- <3DD4D3BA-67B3-4AFC-AD24-799384D54408@pp.inet.fi>
What I am gathering from this is that I can use git in two ways: 1) as "just another svn" bare git repository, or 2) only pull and don't push, because push causes confusion. I'd be happy to only ever use pull, but I have one machine behind a firewall and can't pull. I can push to a bare git repository like the svn model, but then I would just use svn. What's the value of "push" then?
On 4-Dec-07, at 10:20 PM, Väinö Järvelä wrote:
Show 54 quoted lines
> On Dec 5, 2007, at 07:59, g2 wrote: > >> I am currently working on some code at the office that I also want >> to work with at home. Seems like a good candidate for git. So I >> created a repository at work and did a "git clone" at home. I've >> run into some strange behaviour that I don't understand and would >> appreciate if someone can clarify for me. >> >> Imagine this scenario. At work: >> git init >> edit test.c >> git add test.c >> git commit >> >> Then at home: >> git clone <work git url> >> edit test.c >> git commit -a >> git push >> >> At this point, I wanted to push my changes back to my work >> repository so I can continue work the next day. So at home, I did a >> git push. I expect that my work repository has the newest material, >> but I find that when I do "git status" at work the next day, it >> tells me that my test.c is "modified" and has already staged it for >> commit. I need to do a "git reset" followed by "git checkout" to >> update my work folder to the latest stuff. > > Did you clone a bare repository and push to it? > > Here is an excerpt from Git User's Manual: > "Note that the target of a "push" is normally a bare repository. You > can also push to a repository that has a checked-out working tree, > but the working tree will not be updated by the push. This may lead > to unexpected results if the branch you push to is the currently > checked-out branch!" > > So to push to your work repository, you should create an > intermediary repository between the work and home repositories. You > can create it by running: > $ git clone --bare /git/work/ /git/work.git/ > > Then you clone normally from the bare repository and pushing to it > works fine. After you have pushed your changes to the bare > repository, you'll have to pull them to the work repository to get > the updates, just like you would do with any public repository. > > Another option would be to pull from your home repository to the > work repository, if you can access your home computer from the work > computer. > > -- > Väinö >