`git add -A` vs. `git add .`

David Y.

The Problem

What’s the difference between git add -A and git add .?

The Solution

The git add command is used to stage changes for a commit. While it can be used with individual filenames, Git users often want to stage all changed files in a repository at once. git add -A and git add . are two commonly used commands for doing this. In many scenarios, both commands will produce the same effect and are thus sometimes used interchangeably. However, there are several differences between the two that become apparent when working with larger repositories and more complex commits.

git add . stages new files and modifications to existing (tracked) files in the current directory and its subdirectories. Thus, which files are staged will depend on the directory from which the command is executed. git add . does not stage file deletions.

git add -A stages all changes throughout the repository, including new files, modifications to existing files, and deletions of existing files. It will behave in the same manner regardless of which directory it is executed from.

Therefore, if git add . is executed in a repository’s root directory and no files have been deleted since the last commit, it will produce the same result as git add -A. Note that both of these commands will ignore files in the repository’s .gitignore file.

When attempting to stage all changes to a repository since the last commit, git add -A is the correct command to use.

Loved by over 4 million developers and more than 90,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

Share on Twitter
Bookmark this page
Ask a questionJoin the discussion

Related Answers

A better experience for your users. An easier life for your developers.

    TwitterGitHubDribbbleLinkedinDiscord
© 2024 • Sentry is a registered Trademark
of Functional Software, Inc.