How to Add Folder in Git
-
Use
git addto Add All or Specific Folders and Files to Stage Content in Git -
Create Project Folder With 2 Folders and Files to Test
git addin Git - Conclusion
git add is used to add specific folders and files.
This tutorial will tackle git add <folder> in a modern way.
Use git add to Add All or Specific Folders and Files to Stage Content in Git
Add a file using this syntax:
git add <file>
Add a folder using this syntax:
git add folder1/
or
git add folder1
For older versions of git, add the --all flag and add forward slash at the end of the folder name.
git add --all <folder>/
For example:
git add --all folder1/
Create Project Folder With 2 Folders and Files to Test git add in Git
First, create a folder using this command:
mkdir project-folder
To enter the folder, use the bash code.
cd project-folder
Inside the project folder, open Git Bash.
git init
Initialized empty Git repository in C:/You/Documents/project-folder/.git/
This will initialize a git working tree. Create two new folders inside the project folder, and name them folder1 and folder2.
Inside folder1, add a text document and name it text1.txt.
To create a file, run the following command:
touch text1.txt
On Git Bash, run the following code:
git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
folder1/
folder2/
nothing added to commit but untracked files present (use "git add" to track)
The folder1/ and folder2/ are untracked files and not included in the files and folders which are ready to be committed.
Say we want to add folder2/ alone. We will add that, while folder1 will be left unstaged.
git add --all folder2/
or
git add folder2
Check the status.
git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: folder2/text1.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
folder1/
The folder2/text1.txt file and folder are now added to the staged contents. The untracked folder is folder1/.
The . also means all but not equivalent with --all.
Run git add . folder2/ instead of git add --all folder2/. We will put back the folder2 to the unstaged and put it staged again to test this.
git restore --staged .
or
git rm --cached folder2/ -r
Let’s check the status;
git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
folder1/
folder2/
nothing added to commit but untracked files present (use "git add" to track)
Now that all folders are untracked, we can test the code ..
git add . folder2/
git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: folder1/text1.txt
new file: folder2/text1.txt
Two of them are added, as . is meant for all files and folders.
So don’t use . and expect to stage-specific folder. Use --all as in git add --all folder2/.
Conclusion
Add folders is most the same as adding files. Now we can run git add <folder> or git add <folder>/ to cherry-pick folder to stage.