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

Re: howto to run git without a master branch

From
CPCarlos Pereira <jose.carlos.pereira@ist.utl.pt>
Date
Mar 9, 2014, 19:54 UTC
Message-ID
<531CC6FE.2040803@ist.utl.pt>
In-Reply-To
<531C1C69.6080809@web.de>
On 03/09/2014 07:46 AM, Torsten Bögershausen wrote:
Show 25 quoted lines
>> After creating a local repository with these two branches, and a server repository with git init --bare, and pushing the two branches:
>> >  
>> >  git remote add originfoo@bar:~/path/test.git
>> >  git push origin master-g
>> >  git push origin master-x
>> >  
>> >  everything seems fine, but cloning:
>> >  git clonefoo@bar:~/path/test.git
>> >  terminates with a warning: remote HEAD refers to nonexistent ref, unable to checkout.
>>      
> This is because Git is trying to be nice:
> When you clone, it tries to checkout a branch for you.
>
> What happens when you only have 1 branch, lets say master-x?
> If I clone the bare repo here, with only 1 branch, this branch
> is automatically checked out (tested on 1.8.5.2)
>
> What happens when you have 2 branches on the server?
> Git really can not make a decision which one is the right one to check out for
> you, so if you have 2 branched like "master" and "develop", it checks out the
> "master" branch for you.
>
> But if you have "master-x" and "master-g" then Git has no clue, which one could
> be you favorite one (and neither have I)
>    

The problem is on the server repo, the cloned repo is just a consequence. After initializing the server repo and pushing two branches master-g and master-x there is no master branch. Therefore the HEAD file should not point to a master branch that does not exist: ref: refs/heads/master

It could point to master-g (the first branch to be pushed) or master-x (the last branch to be pushed), depending of the criterion used by git, but pointing to something that does not exist seems weird and is the cause of the further complaints when the whole repository is cloned...

I forgot to say that the git version is 1.7.2.5 in both the initial repo and the server repo (probably this issue was fixed in newer versions?)

As I said, editing directly the HEAD text file on the server, and replacing master by master-g (or master-x) seems to solve the problem. My question is: is that enough? or shall I expect further issues down the road?

Thank you very much,
Carlos
Show 6 quoted lines
> What does "git branch" say?
> (I think nothing)
> What does "git branch -r" say?
> (I think "origin/master-g" and "origin/master-x")
>
>    
Previous: Torsten BögershausenNext: Kevin
Message 3 of 7 in “howto to run git without a master branch”
  1. Carlos PereiraMar 8, 2014
  2. Torsten BögershausenMar 9, 2014
  3. Carlos PereiraMar 9, 2014
  4. KevinMar 9, 2014
  5. Ilya BobyrMar 9, 2014
  6. Carlos PereiraMar 9, 2014
  7. Andreas SchwabMar 10, 2014

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.