Creating a Repository
Last updated on 2025-05-12 | Edit this page
Estimated time: 10 minutes
Overview
Questions
- Where does Git store information?
Objectives
- Create a local Git repository.
Once Git is configured, we can start using it. Let’s create a directory for our work and then move into that directory:
Then we tell Git to make planets
a repository—a place where Git can
store versions of our files:
If we use ls
to show the directory’s contents, it
appears that nothing has changed:
But if we add the -a
flag to show everything, we can see
that Git has created a hidden directory within planets
called .git
:
OUTPUT
. .. .git
Git stores information about the project in this special sub-directory. If we ever delete it, we will lose the project’s history.
Next, we will change the default branch to be called
main
. This might be the default branch depending on your
settings and version of git. See the setup
episode for more information on this change.
OUTPUT
Switched to a new branch 'main'
We can check that everything is set up correctly by asking Git to tell us the status of our project:
If you are using a different version of git than I am, then then the exact wording of the output might be slightly different.
OUTPUT
# On branch main
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
Places to Create Git Repositories
Dracula starts a new project, moons
, related to his
planets
project. Despite Wolfman’s concerns, he enters the
following sequence of commands to create one Git repository inside
another:
BASH
$ cd # return to home directory
$ mkdir planets # make a new directory planets
$ cd planets # go into planets
$ git init # make the planets directory a Git repository
$ mkdir moons # make a sub-directory planets/moons
$ cd moons # go into planets/moons
$ git init # make the moons sub-directory a Git repository
Why is it a bad idea to do this? (Notice here that the
planets
project is now also tracking the entire
moons
repository.) How can Dracula undo his last
git init
?
Git repositories can interfere with each other if they are “nested”
in the directory of another: the outer repository will try to
version-control the inner repository. Therefore, it’s best to create
each new Git repository in a separate directory. To be sure that there
is no conflicting repository in the directory, check the output of
git status
. If it looks like the following, you are good to
go to create a new repository as shown above:
OUTPUT
fatal: Not a git repository (or any of the parent directories): .git
Note that we can track files in directories within a Git:
BASH
$ touch moon phobos deimos titan # create moon files
$ cd .. # return to planets directory
$ ls moons # list contents of the moons directory
$ git add moons/* # add all contents of planets/moons
$ git status # show moons files in staging area
$ git commit -m "add moon files" # commit planets/moons to planets Git repository
Similarly, we can ignore (as discussed later) entire directories,
such as the moons
directory:
BASH
$ nano .gitignore # open the .gitignore file in the text editor to add the moons directory
$ cat .gitignore # if you run cat afterwards, it should look like this:
OUTPUT
moons
To recover from this little mistake, Dracula can just remove the
.git
folder in the moons subdirectory. To do so he can run
the following command from inside the ‘moons’ directory:
But be careful! Running this command in the wrong directory, will
remove the entire git-history of a project you might wanted to keep.
Therefore, always check your current directory using the command
pwd
.
Key Points
-
git init
initializes a repository.