Learn Git · Git articles
Git articles
Longer reads on how Git works and where it came from, grouped by topic.
Start here
A 16 Year History of the Git Init Command
In this article, we'll discuss the Git Init command and how it has changed every year for the past 16 years since Git's inception in April 2005.
Data
What % of Git commit messages use the imperative mood?
In this article, we'll estimate the percentage of commit messages that use the imperative mood.
Deep dive
Version Control Systems | A Technical Guide to VCS Internals
Learn what a version control system is and provide technical details of some of the most popular version control systems like SCCS, RCS, CVS, Subversion, Git, and Mercurial.
A series
Baby Git: Git's first commit, read line by line
Linus Torvalds' first version of Git was about a thousand lines of C. These posts walk through it, file by file, to show what Git was before it was Git.
Git basics
Learn the Git core commands and concepts you'll use every day.
-
What is git citool? | Interactive commits in Git
Learn about the powerful git citool command that simplifies the process of code review and integration with an easy-to-understand graphical interface.
-
git notes | Enhance Git Commit Messages with Notes
In this article, we will discuss what Git notes are and how to use them in your Git workflow.
-
What is an Annotated Tag in Git?
-
What is a commit in Git?
In this article, we'll explain everything you need to know about Git commits.
-
git-story: Create mp4 Video Animations of Your Git Commit History with 1 Command
Git Story is a tool that enables developers to create .mp4 video animations of their Git repository commit history, branches, and tags.
-
A Guide to Git Stash: Save Changes for Later
Want to shelve a feature and work on something else? Learn how to use Git Stash to save changes for later.
-
Git Tag | Git Tagging Explained
A guide for learning the git tag command and how it fits into the Git workflow.
-
Git Add | Adding Changes to Git’s Staging Area
Using git add to stage changes in a git workflow.
-
Git Status Command | Uses, Applications & Related Commands
A straightforward how-to tutorial for those looking to learn the git status command.
-
Git Commit Messages: Best Practices & Guidelines
The practical guide to everything you've ever wanted to know about working with Git commit messages.
-
What % of Git commit messages use the imperative mood?
In this article, we'll estimate the percentage of commit messages that use the imperative mood.
-
What is the most popular initial commit message in Git?
This article analyzes different initial commit messages in the Git version control system using a GitHub dataset from Google BigQuery.
-
What is an initial commit in Git?
This article describes what an initial commit is in the Git version control system.
Branching and merging
Learn how to work with branches and merge your changes together.
-
A Comprehensive Guide to Git Merge
Don’t let git merge or merge conflicts intimidate you. Learn all about git merge, fast forward and 3-way merging, git conflicts, and how to merge and handle git conflicts with ease.
-
Git Branches | Git List Branches & Other Branch Commands
Learn what Git branches are and how to use branches in Git
-
Checkout Initial Commit
We explain how to check out the initial commit of any open source project using Git. Examining the initial commit is a great way to learn how a program's code works.
Rewriting history
Learn how to change and clean up commits you've already made.
-
git cherry-pick | Learn to Cherry Pick Commits in Git
A complete guide to using the git cherry pick command.
-
Git Rebase | A Guide to Rebasing in Git
Learn both the theory and practice of git rebase in this comprehensive yet concise guide.
-
Git Reset | The Git Reset Command Explained
A guide to use the git reset command as a part of your Git workflow.
-
4 Git Commands that Rewrite Commit History
In this article, we’ll cover some of the most common Git commands used to rewrite history.
Working with a team
Learn how to share your work and stay in sync with your team.
-
git push | Pushing changes to a remote repository
Git push updates a remote repository with your local changes. Continue reading to follow step-by-step instructions for the git push command, including force pushing.
-
git clone | How to Clone a Repo in Git
A complete guide to using the git clone command.
-
Git Fetch | How Git Fetch Works
Learn how git fetch works, how git fetch compares to git pull, and how to use git fetch effectively.
Getting out of trouble
Learn how to undo mistakes and recover work you thought was lost.
-
Rundown of the Git Archive Command
Create backups & share code by mastering git archive. Learn how to use flags & subcommands, and understand the limitations of git archive
-
git reflog | Understanding Git's reflog feature
A complete guide to using the git reflog command.
-
A Comprehensive Guide to Undoing Changes In Git
Confused about how to undo changes in Git? Want to understand when to use specific commands? Check out this comprehensive guide to learn the 5 best commands for undoing changes in Git at each stage of development.
How Git works inside
Learn how Git works under the hood.
-
git describe Command | git describe examples and usage
Learn how to use the Git describe command to accurately label and track the version of your code repository. Get tips on using tags and annotated tags to make the most of this useful tool.
-
Git Submodule | Tracking sub-repos within your Git repo
Learn to easily reuse code from other projects with the versatile git submodules command.
-
git am | Apply an email patch in Git
In this article, we'll discuss how the email patch recipient can apply patches that they receive through email to their local Git repository as a new commit.
-
git bundle | A Guide for Bundling Git Repos
Use git bundle to utilize Git in an offline or secure setting.
-
git send-email | Send a patch by email in Git
-
git format-patch | Create a patch in Git
In this article, we explain how to use the git format-patch command to enable Git email collaboration.
-
git gc | Git garbage collection for orphaned, dangling objects
A complete guide to using the git gc command for garbage collection in your Git repo.
-
git clean | Delete untracked files in Git
In this article, we'll explain how to use the git clean command to remove untracked files from your Git working directory.
-
How are Git's objects linked together?
-
git shortlog | Use git shortlog to summarize Git's log output
In this article, we'll explain how to use the git shortlog command to create a summary of Git's log output.
-
git banned.h: Why Git's maintainers have a list of banned standard C library functions
In this article, we'll take a closer look at how the C function ban is implemented, the specific C functions that have been banned from use, and why these functions were likely banned from the codebase.
-
What is a tree in Git?
In this article, we'll discuss everything you need to know about trees in Git.
-
What is a blob in Git?
In this article, we'll discuss everything you need to know about blobs in Git.
-
git blame | How to Blame in Git
Got a new bug and don't know where it came from? Git blame is there to help you track down who authored specific lines of a committed file, so you can find the culprit.
-
Git Diff – What is it, Uses & Applications
The pragmatic yet comprehensive guide to getting the most out of git diff for beginners and pros alike.
-
git log | A Guide to Using the log Command in Git
A comprehensive guide for using the git log command.
-
How to Create a New Git Repository | Start a Github Repo
In this article, you will learn how to create a new Git repository, configure it, and commit changes to it.
-
Source Code Management | Git Tutorial
A description of source code management, and how Git is used as a version control system for source code management.
-
Git Bisect | How to Use Git Bisect
Learn how to use the Git Bisect command to efficiently locate problematic commits and remove regression bugs.
-
Git Config | Setup Git Environment
Learn to setup a local Git environment by installing Git and using the Git config command.
-
Saving Changes in Git | How To & Examples
The practical and comprehensive guide to saving changes in Git. Easily learn git status, add, commit, stash, and push commands.
-
Git-RM Uses & Purpose | A No-Nonsense Git RM Tutorial
In this article, we will focus on the git rm command, its various options, and how it can maximize your understanding of Git and collaboration.
-
Git-show | How to Use Git Show With Examples
How to use the git show command to view commits, tags, trees, and blobs in your Git repository.
-
16 Best Git Books of 2022 | How to Learn Git
In this article, we'll discuss the best Git books of 2022 with categories including, "Best Beginner Git Books", "Best Budget Git Books", and "Best Advanced Git Books".
-
How to Remove Local Untracked Files in Git Working Directory
In this article, we'll discuss different types of untracked files, whether you should remove them, and some different methods for dealing with them including .gitignore, manual deletion, and git clean.
-
Git Mv | How To Use Git-Mv To Rename And Move Files
How to use the git mv command when moving or renaming files in a Git repository.
-
A 16 Year History of the Git Init Command
In this article, we'll discuss the Git Init command and how it has changed every year for the past 16 years since Git's inception in April 2005.
-
fatal: not a git repository (or any of the parent directories): .git
In this article, we'll discuss the reasons for the error `fatal: not a git repository (or any of the parent directories): .git` and how to fix it.
-
Git Cheat Sheet: 14 Essential Git Commands for Experts
In this article, we’ll discuss 14 essential Git commands for advanced users.
-
How to paste in Git Bash
In this article, we will discuss how to paste in Git Bash.
-
What is Git HEAD? | The Concept of HEAD in Git - Explained
In this article, we will answer the question What is Git HEAD? Learning about Git HEAD will add to your knowledge and understanding of Git's version control capabilities.
-
Pijul - The Mathematically Sound Version Control System Written in Rust
In this article, we'll discuss Pijul - an alpha stage version control system that is gaining traction in the community.
-
Q&A with the Creator of the Pijul Version Control System
This article is a Q&A format with Pierre-Étienne Meunier, the creator of the Pijul VCS.
-
Merkle trees in Git and Bitcoin
We will discuss how Merkle trees are utilized by both Git and Bitcoin.
-
The Distributed Nature of Git and Bitcoin
This article is Part 1 of our series on the similarities between Git and Bitcoin. We will discuss distributed systems and how Git and Bitcoin leverage them in their architecture.
-
How did Git get its name?
In this article, we will discuss why Linus Torvalds, the creator of Git, chose this name for his Version Control System (VCS). In other words, why is Git called Git? What does Git stand for? What does Git mean?
-
The Evolution of Version Control System (VCS) Internals - Part 2
Compare and contrast the inner workings of some of the most historically significant Version Control Systems, including Perforce Helix Core, BitKeeper, Darcs, Monotone, Bazaar, and Fossil.
-
Version Control Systems | A Technical Guide to VCS Internals
Learn what a version control system is and provide technical details of some of the most popular version control systems like SCCS, RCS, CVS, Subversion, Git, and Mercurial.
-
Baby Git Staging Index
Files are added to the staging area before a commit in Git. This is possible due to Git's staging index. We explain how this works using the initial commit of Git's code.
-
Git's Original Object Database
Any time a file is tracked with Git, it is compressed, hashed, and stored in the object database. We explain how this works using the initial commit of Git's code.
-
An Overview of C Header Files & Git's Original C Header File
This article discusses how to use and include C header files in the C programming language. It also discusses the original C header file in Git's initial commit.
-
What is a Makefile? | Turning Git's Source Code into a Program
Makefiles are used to build and compile programs. We explain how Git's original Makefile works line by line to help clarify how programs like Git are developed.
-
The Definitive Guide to Git's Code
Most guides talk about how to use Git. We want you to understand how Git's code actually works. We explain this in an accessible way in this definitive guide to Git's code.
-
Decoding Git Guidebook: Chapter 2
This overview chapter of the Decoding Git Guidebook for Developers will discuss the key components of the Git application from a code perspective
-
Decoding Git - Guidebook For Developers: Introduction To Git's Code
This introductory chapter of the Decoding Git Guidebook for Developers will set a foundation for understanding how Git's code works
-
Git started with the best version control system
Why learning Git is a great start to a Software development career. It is a version control system used for collaboration in Software development. A great tool!
More about Git
-
I struggled with Git, so I'm making a game to spare others the pain
I struggled with Git, so I'm making a game to spare others the pain
-
Git-Sim 3 Month Dev Update: Community response, New Features, & The Future
The main purpose of this post is to provide a general dev update on what's new in Git-Sim over the past 3 months, and where Git-Sim is headed in the future.
-
git-sim: Visually simulate Git operations in your own repos
git-sim: Visually simulate Git operations in your own repos with a single terminal command
-
How to file a bug report in Git?
In this article, we'll discuss what to do if you find a bug in Git, how to test it out locally to make sure it's a bug, and how to report it to the Git maintainer and dev community so they can hopefully fix it.
-
Using PyCharm with Git
In this article, we'll discuss how to get started using Git integration for a new or existing PyCharm project.
-
Baby Git Release
Baby Git is an open source project that we have released for those that want to dip their toes into the world of the Git application