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

Re: How to jump between two repositories ...

From
Gg2 <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ö
>
Previous: Väinö JärveläNext: Steven Grimm
Message 8 of 10 in “How to jump between two repositories ...”
  1. g2Dec 5, 2007
  2. Shawn O. PearceDec 5, 2007
  3. J. Bruce FieldsDec 5, 2007
  4. Andreas EricssonDec 5, 2007
  5. g2Dec 5, 2007
  6. Andreas EricssonDec 5, 2007
  7. Väinö JärveläDec 5, 2007
  8. g2Dec 5, 2007
  9. Steven GrimmDec 5, 2007
  10. Väinö JärveläDec 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.