git says I have unstaged changes but I do not show them

19,098

AHA!! I figured out what is going on. Read the last few sentences for a little insight.

The answer was to first do:

git status

This showed modified files in RED, which I presume means they are somehow "deleted" in git's mind. I then did:

git add --all

From there I committed all the staged files using SourceTree (sorry I didn't stay with the command line all the way). I went ahead and simultaneously pushed changes up to the server but that would be optional.

The above command then worked successfully.

When I tried to run the above command on a different file, I had the same problem. So I again ran git status and it turns out that the file that I just removed from history is still there and so you need to do this:

git rm /previous_file_you_just_removed_from_history.php

Also to clarify, the filter-branch command will remove the history of that file from all commits, but it will NOT remove the changes that you made to that file. I.e. that removed file is still the sum of all changes you made to it up to that point. I hope this helps clear this concept up for someone else.

Share:
19,098
Oliver Williams
Author by

Oliver Williams

Updated on June 15, 2022

Comments

  • Oliver Williams
    Oliver Williams almost 2 years

    I am executing this command on the second file I want to remove (the first was JetBrains' .idea folder files which are now in .gitignore), but I am not able to:

    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch gf5/console/basic.php' --prune-empty --tag-name-filter cat -- --all
    Cannot rewrite branches: You have unstaged changes.
    

    So how do I know what "unstaged" files git is referring to when it does not list them, and how do I fix this?

    PS the issue is not stash(es), I do not have any and have not done any stashing on this repo ever.

    NOTE: I did a git status and receive this:

    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        modified:   gf5/console/basic.php
    
    Changes not staged for commit:
       (use "git add <file>..." to update what will be committed)
       (use "git checkout -- <file>..." to discard changes in working directory)
    
    //(and a whole long list of files)
    
  • sloppypasta
    sloppypasta over 7 years
    No, not "deleted", just modified.
  • pooria
    pooria about 2 years
    You should mention that it deletes your files from disk and not just from git history.