To stop Git from tracking files while preserving them in your working directory, you need to manipulate the staging index—not the filesystem. This is especially useful when accidentally committing configuration files, build artifacts, or sensitive data that should later be ignored.
Unstaging a Newly Added File
If you've run git add on a file but haven't committed yet, it resides only in the index. To remove it from staging while keeping the local file intact:
git restore --staged hello.txt
After this, git status will show hello.txt under Untracked files, confirming it's no longer staged.
Stopping Tracikng for Already Committed Files
Once a file has been committed, adding it to .gitignore alone won’t stop Git from monitoring changes—it remains tracked. To fully untrack it (i.e., remove it from the index but retain it locally), use:
git rm --cached hello.txt
This command removes the file’s entry from the index and stages a deletion for the next commit—but leaves hello.txt untouched in your working tree.
Verify with git status:
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: hello.txt
Now add hello.txt to .gitignore. Subsequent edits to the file will no longer appear in git status.
Untracking Entire Directories
To untrack a folder and all its contents recursively (e.g., build/), combine --cached with -r:
git rm -r --cached build/
This clears the entire subtree from Git’s index without touching the actual build/ directory on disk. After committing, the folder becomes fully ignored if listed in .gitignore.
Note: Always ensure the target path exists in .gitignore before committing the untracking change—otherwise, Git may re-add it in future operations.