Creating and Sharing a New Repository

If you have a project that isn’t already in Git, you will need to first create a local repository for it. Let’s say you have a directory called my-project in which you already have a set of files. You want to keep it under version control. Here’s what you do:

$ cd my-project
$ git init
Initialized empty Git repository in .git/
$ git add .
$ git commit -m 'Initial commit'

(The git add command above won’t work unless there is at least one file to add, and git commit won’t work until you’ve git added at least one file.)

For personal projects, that might be all you need; you can now create commits, branches, and tags, compare differences, and so on.

If you want to share your project with someone else, however, you will need to create a bare repository (i.e., one with no work tree of its own) and give other people access to it. In this example, we’ll create a new bare repository in /home/git/my-project.git, copied from /tmp/my-project, and give access to everyone in the mygroup Unix group:

$ git clone --bare /tmp/my-project /home/git/my-project.git
Initialized empty Git repository in .git/
$ cd /home/git/my-project.git
$ git config core.sharedRepository group
$ chgrp -R mygroup .
$ chmod -R g+rwX .

By convention, bare repositories have pathnames that end in a .git suffix. This is because they don’t contain a .git subdirectory—the .git subdirectory contents are in the root of the bare repository, since there’s no work tree.

People in mygroup can now git ...

Get Linux in a Nutshell, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.