Re: Git clone - head not pointing to master
Vibin Nair <vibin@volitionlabs.com> writes:
Show 18 quoted lines
> Hi,
> I am a Git beginner. Recently i started working on a codebase (that
> is checked in to a git repository) of our client, who is not very
> aware about how git works.
> The repository has multiple branches such as
>
> origin/user1
> origin/master
> origin/user2
>
> Now when i take a clone of this repository : git clone <repo-url>, a
> clone of the repo is created on my machine.
>
> But when i do a : "git branch" it shows
>
> user1 *
>
> which means that the "HEAD" is pointing to the "user1" branch.
Where do you do "git branch"? In clone or in original repository?
Show 9 quoted lines
> The client told me that all the recent code were being merged into the
> "master" branch and hence the "user1" branch has code which is older
> than "master" branch.
>
> I had 2 queries :
>
> 1. Is it possible to make the "HEAD" of the remote point to "master"
> instead of "user1", so that other members of my team get the latest
> code when they try to clone the repository.
If you want "origin/HEAD" to point to "origin/master" remote-tracking branch, so that "origin" as a branch means "origin/master", you can use (with modern Git)
clone$ git remote set-head origin master
or
clone$ git remote set-head origin
if "master" is now current branch on remote.
If you want to change HEAD i.e. current branch on server (on remote), you can use
server$ git checkout master
if it is non-bare repository (not recommended setup), or
server$ git symbolic-ref HEAD refs/heads/master
or equivalently
server$ git update-ref --no-deref HEAD refs/heads/master
> 2. Is there any way to safely merge "user1" to "master".
You can check if 'user1' can be fast-forwarded to 'master' with
$ git checkout user1
$ git merge --ff-only master
This would update 'user1' to 'master', but only if 'master' is just straight advancement of 'user1'.
HTH (Hope That Helps).
--
Jakub Narebski