Git untracked files list is wrong

前端 未结 8 1976
南方客
南方客 2020-12-29 02:59

Somehow, git got it in its head that I have an untracked file (A directory that has been in my repository for quite some time, ~17 months). At any rate, I can\'t seem to con

相关标签:
8条回答
  • 2020-12-29 03:23

    The . in the git add . command refers to the "current directory". So, running git add . will add all the files in the current directory and its subdirectories. You should ensure that you are in the correct directory before running git add.

    git add -A is what you want. It will add everything.

    0 讨论(0)
  • 2020-12-29 03:23

    I had the same error: no case changes, no .ignore problems and the directory did contain files that I definitely wanted to keep. Adding the dir, committing, git add -A and other remedies did not have any effect.

    I ended up deleting the directory with "git clean" and then checking out the files inside the dir again.

    Here is what I did:

    rex@sidekick> git status
    # On branch master
    # Your branch is ahead of 'origin/master' by 10 commits.
    #
    # Untracked files:
    #   (use "git add <file>..." to include in what will be committed)
    #
    #   app/models/xSpecific/
    nothing added to commit but untracked files present (use "git add" to track)
    

    At this point I made a backup copy of the "xSpecific" directory just in case. Then I made a dry run with ´git clean´ (the -n option means "dry run" and -d makes clean remove directories):

    rex@sidekick> git clean -n -d
    Would remove app/models/xSpecific/
    

    After double and triple checking, I went ahead with the cleaning (the -f flag means "force" and is needed to persuade Git that you are serious. Very good design, if you ask me):

    rex@sidekick> git clean -d -f
    Removing app/models/xSpecific/
    
    rex@sidekick> git status
    # On branch master
    # Your branch is ahead of 'origin/master' by 10 commits.
    #
    # Changed but not updated:
    #   (use "git add/rm <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #   deleted:    app/models/xSpecific/GetAddressesLog.java
    #   deleted:    app/models/xSpecific/GetProductLog.java
    #
    no changes added to commit (use "git add" and/or "git commit -a")
    

    So far, so good. The directory was no longer listed, but the files were of course gone too. I could have restored them from my backup, but this is what Git was made for:

    rex@sidekick> git checkout -- app/models/xSpecific/GetAddressesLog.java
    rex@sidekick> git checkout -- app/models/xSpecific/GetProductLog.java
    
    rex@sidekick> git status
    # On branch master
    # Your branch is ahead of 'origin/master' by 10 commits.
    #
    nothing to commit (working directory clean)
    

    Time to celebrate! Actually, it would probably have been easier to just clone off a new copy of the repository and use that instead, but by doing it the hard way I learned something new :).

    0 讨论(0)
  • 2020-12-29 03:24

    This solved the problem for me rm .git/fs_cache

    0 讨论(0)
  • 2020-12-29 03:28

    I had important untracked files and couldn't just run git clean -f as some answers suggest.

    I try to add the directory and re-check the status.

    ➜ git add rosetta_tests/profile/tests/docking/
    

    And it seems that adding a whole directory does not trigger a file recheck.

    So I tried adding specifically one of the supposedly untracked files and it worked:

    $ git status
    On branch foo
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            important.txt
            foo/foo.java
            foo/bar.java
            foo/baz.java
            foo/qux.java
    
    nothing added to commit but untracked files present (use "git add" to track)
    
    $ git add -- foo/foo.java
    fatal: pathspec 'foo/foo.java' did not match any files
    
    $ git status
    On branch foo
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            important.txt
    
    nothing added to commit but untracked files present (use "git add" to track)
    
    0 讨论(0)
  • 2020-12-29 03:34

    I solved this by running

    git clean -f
    
    0 讨论(0)
  • 2020-12-29 03:41

    This error popped up for me when git add failed due to a file name being too long in a sub directory. (in my case, something in node_modules)

    In this case, adding a .gitignore file with content of * to the node_modules folder allowed git add to run to completion.

    So, pay attention to the command output of git add . (or -A or --all) and make sure it is not stopping prematurely due to an error. All of my "untracked" files and folders were added successfully once the proper .gitignore was applied and I was able to commit and push my changes.

    0 讨论(0)
提交回复
热议问题