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

Re: How can I access remote branches in a cloned repository on my local machine?

From
JHJan Hudec <bulb@ucw.cz>
Date
Oct 20, 2007, 14:09 UTC
Message-ID
<20071020140927.GC19521@efreet.light.src>
In-Reply-To
<05B1B470-1C86-40E6-9E33-968809414537@atlasocean.com>
On Sat, Oct 20, 2007 at 06:15:21 -0700, Erich Ocean wrote:
Show 7 quoted lines
> Our developer group has a shared git repository at 
> git@git.1kstudios.lan:dev.
>
> Each developer has established their own local repository by running:
>
> 	git clone git@git.1kstudios.lan:dev
> 	git config remote.origin.push master:refs/remotes/<username>/master
The paths on server are refs/remotes/<userame>/master.

It's more common to publish (push to public or shared repository) to refs/heads. The refs/remotes namespace is normally only used when fetching. There's nothing in git saying you can't do it your way, but there are things that make the common way more convenient.

Show 8 quoted lines
> Each developer then does a `git pull` to update their master branch, merges 
> their changes from their local topic branches, and then does `git push` to 
> make the results available at git@git.1kstudios.lan:dev.
>
> As the integrator, I have then been ssh'ing into the git@git.1kstudios.lan 
> machine, cd'ing to "dev" and doing:
>
> 	git merge <username>/master

Yes, because locally refs/remotes is searched when looking for unqualified ref. But if you checked that out, git would complain it's not a branch and created a detached head.

Show 18 quoted lines
> to incorporate their changes after running `git diff` to see what the 
> changes are.
>
> My own development repository is set up identically to the other 
> developers.
>
> What I would like to do now is clone the git@git.1kstudios.lan:dev 
> repository on my local machine a second time, checkout a <username>/master 
> branch in that repository, and then use BBEdit's graphical diff to visually 
> see the changes between my own repository and what another developer has 
> pushed to the shared repository. I'll then merge them into my own developer 
> repository and push that to the shared repository for the rest of the 
> developers to pull from, so no longer will I merge by ssh'ing into the 
> machine with the shared repository.
>
> The problem is, when I clone git@git.1kstudios.lan:dev, the various 
> <username>/master's aren't there. I have tried a bunch of different ways, 
> but they all give me errors. For example:

By default clone only compies refs from refs/heads to refs/remotes/origin and from refs/tags to refs/tags.

You have two options here:
 - Move the branches on server to refs/heads. Then the various
   <username>/master will be visible locally as origin/<username>/master
   (qualified names refs/remotes/origin/<username>/master -- you can of
   course call the remote differently if you want).
 - Add +refs/remotes/*:refs/remotes/origin/* to remote.origin.fetch config
   key in your local repository (I am not sure it will work properly with
   multiple source patterns with the same destination pattern, though).
-- 
						 Jan 'Bulb' Hudec <bulb@ucw.cz>
Previous: Erich Ocean
Message 5 of 5 in “How can I access remote branches in a cloned repository on my local machine?”
  1. Erich OceanOct 20, 2007
  2. Julian PhillipsOct 20, 2007
  3. Julian PhillipsOct 20, 2007
  4. [Solved] How can I access remote branches in a cloned repository on my local machine?Erich Ocean, Oct 20, 2007
  5. Jan HudecOct 20, 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.