git add copies files' current content into the index (The Index), and git commit records exactly what the index holds, not your working tree (6). BookNest's first commit holds only settings and npm 2,036 manifests:
git add .gitattributes .gitignore package.json package-lock.json
git status --short
git commit -m "Add npm manifest, lockfile and repository settings"A .gitattributes A .gitignore A package-lock.json A package.json ?? README.md ?? app.js ?? db/ ?? docker-compose.yml ?? public/ ?? server.js ?? test/ [main (root-commit) 31681b8] Add npm manifest, lockfile and repository settings 4 files changed, 1077 insertions(+) create mode 100644 .gitattributes ...
A means "added to the index" and ?? untracked; node_modules/ and .env no longer appear. The summary marks the root-commit and its short hash, which will differ for you because it includes your name and the time.

git add <path> stages every change under a path, git add -u only changes to tracked files, git add -A everything in the repository, and git add -p chosen hunks, interactively, which is how you split unrelated edits in one file into separate commits. git restore --staged <path> unstages. Whatever you use, read git status before every commit.