Git Rm

Manual: Removing Tracked Files from Remote Repositories

This guide covers how to stop Git from tracking a file (or folder) that has already been pushed to a remote server (like GitHub), specifically when that file has been added to .gitignore after the fact.

1. The Problem

When you add a file to .gitignore, Git only ignores untracked files. If a file was already committed, Git will continue to track changes to it regardless of what your .gitignore says.

2. The Solution: git rm –cached

To fix this, you must manually remove the file from Git’s index (the “staging area”) without deleting the physical file from your local machine.

Step-by-Step Instructions

Step A: Ensure your .gitignore is updated

Make sure the file or pattern is already listed in your .gitignore file.


echo "filename_to_ignore.txt" >> .gitignore

Step B: Untrack the file

Run the following command. Replace path/to/file with your actual file path.


git rm --cached <path/to/file>

Note: If you are removing an entire directory, use the recursive flag:


git rm -r --cached <path/to/directory>

Step C: Commit the “Removal”

At this point, Git sees the file as “deleted” from the repository’s perspective, even though it’s still sitting on your hard drive.


git commit -m "chore: stop tracking files included in .gitignore"

Step D: Update the Remote

Push your changes to GitHub to synchronize the deletion.


git push origin <your-branch-name>

3. Critical Warnings

⚠️ Data Persistence in History

This process removes the file from the current version of your branch. However, the file still exists in your older commits.

  • Public Repos: If the file contained passwords or API keys, they are still visible to anyone who browses your commit history.
  • Action Required: If sensitive data was leaked, rotate your credentials immediately.

⚠️ Impact on Teammates

When your teammates git pull this change, the file will be deleted from their local folders because Git treats the rm command as a deletion instruction for their working trees.

  • Fix: Share the file (e.g., .env) with them via a secure channel so they can manually re-add it to their local directory.