Initializing a repository is your first step into Git. Think of git init as creating a new folder in Git's special system โ once you initialize, a .git directory appears that contains all the metadata needed to track your project's history.
Creating a New Repository
git init takes almost no time but sets up everything you need. After initializing, you always see the .git directory in your project root. This is where Git stores all your commit objects, tree structures, and references to branches.
$ ls
$ git init
$ ls -la
The .git directory contains several subdirectories and files that Git uses internally:
objects/โ stores all your committed data (file contents, commits, trees)refs/โ contains pointers to commits (branches, tags)HEADโ points to the current branch you're working onconfigโ stores your repository-specific settings
You don't need to touch these files directly. Git manages them automatically.
Cloning an Existing Repository
If someone else has already created a repository, you don't need git init. Instead, use git clone to download the entire project with its history:
$ git clone https://github.com/user/project.git
$ cd project
$ ls -la
Cloning creates a complete copy of the repository, including all branches, tags, and commit history. It also automatically sets up the remote connection (usually called origin) pointing back to the original repository.
Checking Repository Status
After initializing or cloning, use git status to see what's happening in your repository:
$ git status
On branch main
No commits yet
nothing to commit (create copy "git add" to track new files)
This command tells you which branch you're on, whether you have any uncommitted changes, and which files Git is tracking. Make it a habit to run git status frequently โ it's your window into what Git is doing.