Skip to content
Latchkey

git rm: Usage, Options & Common CI Errors

git rm deletes files and stages the removal in one step.

Use git rm to delete tracked files; --cached untracks a file while keeping it on disk.

What it does

git rm removes files from both the working tree and the index, staging the deletion for the next commit. With --cached it removes only from the index, leaving the file in place.

Common usage

Terminal
git rm file.txt
git rm -r dir/                # recursive
git rm --cached secrets.env  # stop tracking, keep file
git rm -f file.txt           # force when modified/staged

Options

FlagWhat it does
--cachedRemove from index only, keep on disk
-rRecurse into directories
-f / --forceOverride the up-to-date safety check
-n / --dry-runShow what would be removed

Common errors in CI

error: the following file has staged content different from both the file and the HEAD / 'X' has changes staged in the index - git protects unsaved changes. Use -f to force, or git rm --cached to merely untrack (commonly after adding a path to .gitignore).

Using this in CI

CI checkouts are shallow and detached by default, which changes the answer this command gives you. Commands that read history, branch names, or tags need the checkout configured for it.

.github/workflows/ci.yml
- uses: actions/checkout@v4
  with:
    fetch-depth: 0   # history, tags, and git describe all need this

- run: |
    git rev-parse --is-shallow-repository   # expect false
    git rev-parse --abbrev-ref HEAD          # prints HEAD when detached

Frequently asked questions

git rm: Usage, Options & Common CI Errors?
Use git rm to delete tracked files; --cached untracks a file while keeping it on disk.
What it does?
git rm removes files from both the working tree and the index, staging the deletion for the next commit. With --cached it removes only from the index, leaving the file in place.
Common errors in CI?
error: the following file has staged content different from both the file and the HEAD / 'X' has changes staged in the index - git protects unsaved changes. Use -f to force, or git rm --cached to merely untrack (commonly after adding a path to .gitignore).

Related guides

References

Run this faster and cheaper on Latchkey managed runners - self-healing included. Start free → 30-day trial · No credit card