Git is a distributed version-control system: it records a project’s history so you can see how the project changed, save checkpoints, and work on separate lines of development. You can use it on your own computer; it does not require GitHub or another central server.
What is Git, in plain English?
Imagine keeping a notebook of a project’s important checkpoints. Each checkpoint lets you understand what the project looked like at a particular point and how it connects to earlier work. Git provides that kind of history for files in a project. The analogy has limits: a commit is not necessarily a fresh, complete duplicate of every file. Git can reuse unchanged content between recorded states.
The Git user manual describes it as “a fast distributed revision control system.” In practical terms, Git helps you record changes, inspect project history, and return to earlier states. Git is a tool, not a programming language or a website. A Git repository is the project’s stored Git data and history. GitHub is a hosting and collaboration service that can store Git repositories; it is not Git itself.
For a fuller explanation of Git’s design, see Pro Git’s introduction to what Git is.
#1 Best Overall
How does Git record a project’s history?
Git’s conceptual model is a sequence of project snapshots connected by history. A commit records the project state prepared in the staging area and points back to its parent commit or commits. Unchanged file content can be reused instead of being stored as a new duplicate each time. A commit is therefore a recorded snapshot with history information—not merely a text list of edits.
Most commits have one parent. When histories are merged, a merge commit can have multiple parents. Those connections form a history graph, allowing Git to represent how separate lines of work came together.
Rank #2
What are the working tree, staging area, and Git directory?
These are the three places to understand in Git’s everyday workflow:
- Working tree: The files currently checked out on your computer. This is where you edit.
- Staging area (also called the index): The selection of file content prepared for the next commit.
- Git directory: The repository’s stored data, including metadata and objects that make up its committed history.
The distinction between the working tree and staging area gives you control over what goes into a commit. You can edit several files but stage only the changes you want to record next.
Recommended Free Tools
How do you make a commit?
A typical beginner workflow is to inspect the project, stage the intended file, review what is staged, and commit it:
git status— See which changes are in the working tree and which are staged.git add <file>— Stage the named file’s current content for the next commit.git diff --staged— Review the staged changes before recording them.git commit -m "Describe the change"— Record the staged state in the repository’s local history.
git add stages the content as it exists when you run the command. If you edit that file again afterward, the new edit is not automatically included in the already-staged version; stage it again if you want it in the next commit. For more on this distinction, see Pro Git’s guide to recording changes.
Using git add . stages all applicable changes under the current directory. That can be convenient once you have inspected the changes, but it is not a substitute for checking what you intend to include.
What is a branch?
A branch is a lightweight, movable reference to a commit. It gives you a separate line of work for a task or experiment without treating that line as a separate folder or a full copy of the project. As you make commits on the branch, its reference moves to the latest commit; the commits themselves retain their links to earlier history.
Free tools Windows power users keep installed
One-click scans. No signup required.
Best Value
When separate lines of work are brought together, Git can connect their histories, including with a merge commit that has more than one parent. See Pro Git’s explanation of branches for the underlying model.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.What does “distributed” mean?
When you clone a Git repository, you get a local repository with its history. Many everyday operations—such as inspecting history and creating commits—can happen on your computer without contacting a server. A remote repository is useful when you want to share history or collaborate with others. Commands such as push and fetch transfer history between repositories.
This differs from a centralized version-control model, where the central server is the primary place to access project history. Git does not require a central server to record local work, even though teams often use a hosted remote to coordinate.
Keep learning
Pro Git is the official book page for the second edition, with the book available to read online and print versions listed as available on Amazon.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

