Using git add
The command git add stages a file. In terms of Git’s file classifications, if a file is untracked, git add converts that file’s status to tracked. When git add is used on a directory name, all of the files and subdirectories beneath it are staged recursively.
Let’s continue the example from the previous section:
$git status# On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore # data # Track both new files. $git add data .gitignore$git status# On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: .gitignore # new file: data #
The first git status shows you that two files are untracked and reminds you that to make a file tracked, you simply need to use git add. After git add, both data and .gitignore are staged and tracked, ready to be added to the repository on the next commit.
In terms of Git’s object model, the entirety of each file, at the moment you issued git add, was copied into the object store and indexed by its resulting SHA1 name. Staging a file is also called “caching a file”[10] or “putting a file in the index.”
You can use git ls-files to peer under the object model hood and find the SHA1 values for those staged files:
$ git ls-files --stage
100644 0487f44090ad950f61955271cf0a2d6c6a83ad9a 0 .gitignore
100644 534469f67ae5ce72a7a274faf30dee3c2ea1746d 0 dataMost of the day-to-day changes within your repository ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access