Bare Git, libgit2sharp question


(Fredy Ferrari) #1

Does anybody have experience with libgit2sharp and/or bare git repos?

I tried to create a git repo to track some files but always get a detached HEAD and I cannot figure out what I’m doing wrong.

Any ideas?

(Carlo Kok) #2

I thought that a bare git repository by definition is just a copy of the repository (so you don’t have a working copy) and thus not a branch you’re working on.

(Fredy Ferrari) #3

Yes, there is no working copy. But when I now clone the bare git, it should produce a proper git with the working copy (it creates the working copy by going through the commits).
When I clone my bare git, I get a warning regarding detached HEAD.

I also did create a normal git using git commands (not libgit2sharp) and created a bare repo out of it. The difference between my bare repo and the one I created via git commands was that my repo was not connected to the master branch.

(Carlo Kok) #4

That’s because you checkout a commit, not a branch. Commits are detached, branches are not. If you want a specific branch:
git checkout -b mybranch abcdef

However when you push a commit on top of non-top revision it will fail (without a git pull first)

(Fredy Ferrari) #5

maybe I do not understand it properly, but it appears like my commit are not assigned to any branch.

(Carlo Kok) #6

Commits usually aren’t, since a specific commit can be in multiple branches. You should checkout a branch, not a commit. If your purpose is to just read from a past commit, then the detached HEAD is not a problem.

(Fredy Ferrari) #7

I see that I can recreate the complete source from the commits, so it’s not necessarily a problem.

But, in my repo, the commits are not assigned to any branch, I cannot clone a branch (or checkout). I can only clone the complete thing, there no branches or so. it’s like I lose what the head originally pointed to when the repo got created.

It looks different than when I do it using normal git and crate a bare git out of it.

gitk shows no branches, just the linked commits.

Do I need to create the master branch? Isn’t it there by default? (As the Tip is empty and the branches, too)

(Carlo Kok) #8

The real question is: do you really need a branch? If you’re not going to change anything, a detached commit is perfectly fine.