Bird
Raised Fist0
Gitdevops~5 mins

The .git directory structure - Commands & Configuration

Choose your learning style10 modes available
Introduction
When you create a Git repository, it stores all its data and history inside a hidden folder called .git. This folder keeps track of your project changes and helps Git manage versions safely.
When you want to understand how Git saves your project history and files internally
When you need to troubleshoot Git issues related to repository data
When you want to manually inspect or backup your Git repository data
When you want to learn how Git organizes commits, branches, and configurations
When you want to clean or reset parts of your Git repository safely
Commands
This command creates a new Git repository in the folder 'my-project' and sets up the .git directory inside it to store all Git data.
Terminal
git init my-project
Expected OutputExpected
Initialized empty Git repository in /home/user/my-project/.git/
This lists all files and folders inside the .git directory so you can see how Git organizes its internal data.
Terminal
ls -la my-project/.git
Expected OutputExpected
total 48 drwxr-xr-x 7 user user 4096 Jun 10 12:00 . drwxr-xr-x 3 user user 4096 Jun 10 12:00 .. drwxr-xr-x 2 user user 4096 Jun 10 12:00 branches drwxr-xr-x 2 user user 4096 Jun 10 12:00 hooks drwxr-xr-x 2 user user 4096 Jun 10 12:00 info drwxr-xr-x 4 user user 4096 Jun 10 12:00 objects drwxr-xr-x 4 user user 4096 Jun 10 12:00 refs -rw-r--r-- 1 user user 23 Jun 10 12:00 HEAD -rw-r--r-- 1 user user 73 Jun 10 12:00 config -rw-r--r-- 1 user user 56 Jun 10 12:00 description
This shows the current branch or commit that Git is pointing to, which is important for understanding what you are working on.
Terminal
cat my-project/.git/HEAD
Expected OutputExpected
ref: refs/heads/main
Key Concept

If you remember nothing else from this pattern, remember: the .git directory holds all the hidden data that makes Git track your project history and branches.

Common Mistakes
Deleting or modifying files inside the .git directory manually
This can corrupt your Git repository and cause loss of history or broken branches.
Use Git commands like git reset or git clean to safely modify repository state instead of touching .git files directly.
Ignoring the .git directory when copying or backing up a project
Without the .git folder, you lose all version history and Git tracking for the project.
Always include the .git directory when copying or backing up a Git repository to keep its full history.
Summary
The .git directory is a hidden folder that stores all Git data and history.
It contains folders like objects, refs, and files like HEAD and config that organize commits and branches.
Use Git commands to interact with this data safely instead of editing .git files manually.

Practice

(1/5)
1. What is the main purpose of the .git directory in a Git project?
easy
A. It stores all the data and history of the Git repository.
B. It contains the source code files of the project.
C. It holds temporary files created by the operating system.
D. It stores user configuration settings unrelated to Git.

Solution

  1. Step 1: Understand the role of .git directory

    The .git directory is created when you initialize a Git repository and it stores all Git-related data.
  2. Step 2: Differentiate from other directories

    Source code files are outside .git, and temporary or unrelated user files are not stored here.
  3. Final Answer:

    It stores all the data and history of the Git repository. -> Option A
  4. Quick Check:

    .git = Git data storage [OK]
Hint: Remember: .git holds Git's data, not project files [OK]
Common Mistakes:
  • Confusing .git with project source files
  • Thinking it stores temporary OS files
  • Assuming it holds unrelated user configs
2. Which of the following is a correct folder inside the .git directory?
easy
A. src
B. temp
C. bin
D. objects

Solution

  1. Step 1: Recall standard .git folders

    The .git directory contains folders like objects, refs, and hooks.
  2. Step 2: Identify the correct folder

    Among the options, only objects is a valid folder inside .git.
  3. Final Answer:

    objects -> Option D
  4. Quick Check:

    objects folder exists in .git [OK]
Hint: Look for Git-specific folders like objects [OK]
Common Mistakes:
  • Choosing project folders like src
  • Selecting unrelated folders like bin or temp
3. If you look inside the .git/refs/heads folder, what will you typically find?
medium
A. Configuration settings for Git hooks
B. Binary objects of the project files
C. Files representing branches in the repository
D. Temporary files created during commits

Solution

  1. Step 1: Understand refs/heads purpose

    The refs/heads folder stores files named after branches, each containing the commit hash of the branch tip.
  2. Step 2: Differentiate from other folders

    Binary objects are in objects, hooks configs are in hooks, and temporary files are not stored here.
  3. Final Answer:

    Files representing branches in the repository -> Option C
  4. Quick Check:

    refs/heads = branch pointers [OK]
Hint: Remember: refs/heads holds branch names [OK]
Common Mistakes:
  • Confusing branch refs with object storage
  • Thinking hooks configs are here
  • Assuming temporary files are stored here
4. You accidentally deleted the .git/HEAD file. What problem will this cause?
medium
A. Your project files will be deleted.
B. Git will lose track of the current branch or commit.
C. Git will stop tracking remote repositories.
D. Nothing will happen; Git recreates it automatically.

Solution

  1. Step 1: Understand the role of HEAD file

    The HEAD file points to the current branch or commit checked out in the working directory.
  2. Step 2: Consequence of deleting HEAD

    Without HEAD, Git cannot know which branch or commit is active, causing errors in commands.
  3. Final Answer:

    Git will lose track of the current branch or commit. -> Option B
  4. Quick Check:

    HEAD tracks current branch [OK]
Hint: HEAD file = current branch pointer; deleting it breaks Git [OK]
Common Mistakes:
  • Thinking project files get deleted
  • Assuming remote tracking is affected
  • Believing Git auto-recreates HEAD always
5. You want to manually inspect the commit history by reading files inside the .git directory. Which folder should you explore to find the actual commit objects?
hard
A. objects
B. hooks
C. refs
D. logs

Solution

  1. Step 1: Identify where commit data is stored

    The objects folder stores all Git objects including commits, trees, and blobs in compressed form.
  2. Step 2: Differentiate from other folders

    refs holds pointers to commits, hooks contains scripts, and logs track changes to refs.
  3. Final Answer:

    objects -> Option A
  4. Quick Check:

    Commit data = objects folder [OK]
Hint: Commit objects live in objects folder inside .git [OK]
Common Mistakes:
  • Confusing refs with actual commit data
  • Looking in hooks or logs for commits
  • Assuming commit data is in project files
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard