同样列出的文件既未跟踪也未删除

时间:2016-05-18 11:41:00

标签: git file

在Git存储库中运行git status,我得到:

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    path/to/file1.sql 
        deleted:    path/to/file2.sql 
        deleted:    path/to/file3.sql 

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        path/to/file1.sql
        path/to/file2.sql
        path/to/file3.sql

no changes added to commit (use "git add" and/or "git commit -a")

其他每个文件都没问题。 我已经尝试过重置,结账等,并再次克隆存储库(我们使用集中式服务器)。没有什么能解决这个问题,但仅限于使用Windows的特定用户。 该问题不会出现在Linux上。

其他信息:

  • git diff显示没有输出。
  • 我已经尝试将core.autocrlf设置为false。

2 个答案:

答案 0 :(得分:4)

实际上这是一件非常简单的事情:文件已经在文件名的 end 处提交了一个空格。 显然Windows无法处理这个问题,并且每次都会自动删除空间(克隆后,结账后等)。

所以Git显示了正确的信息,文件"path/to/file1.sql "已被删除,文件"path/to/file1.sql"是新的(抱歉这没有显示在问题中,现在我现在更正了显示示例Git输出中的空格。

我一开始没注意到这一点,因为我看到ls在那里很好,并试图调试所有内容后,我只是在/path/to/编辑了Linux上目录git status的内容在Windows中(不可能,除非你通过选择Git输出的正确部分以某种方式注意到该空间)。 我正在执行对文件名的额外检查(在Linux上),感谢Vampirecomment我得到了奇怪的结果

ls /path/to/file1.sql
ls: file not found

按下TAB并看到"/path/to/file1.sql\ "后我发现了它。 我认为这个问题非常简单,但由于每天都有人提交名称末尾带有空格的文件,我认为可能需要一段时间才能发现Git没有真正的问题。

所以我现在要留下问题和答案,如果你不同意只是downvote,我将删除所有内容。

感谢所有在评论中提供帮助的人。

答案 1 :(得分:0)

我有一个非常类似的问题,在这里讨论Git doesn't stage my files any longer, and reports them as both "deleted" and "untracked". Why is that, and how to avoid it?

我发现:

  • 使用git add --all正常工作

  • 使用git add -A无效......即使它应该与第一个相同

  • 放空格可能是你的问题,但这不是导致我的问题:(它仍未解决。仅供参考。我在Mac OS 10.10上工作

  • 我在使用简单命令git add filename(没有空格)添加文件时仍然遇到问题,并且仍然通过添加所有内容(git add --all来解决它)所以它有点有点麻烦(因为两者都不方便,并且仍然无法解释)但我仍然可以继续我的工作。

以下是有效的内容,没有的内容,重新创建问题的内容以及解决问题的方法:

$ git add --all
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   Challenge28.py
    modified:   ch28_NN.py

$ git add Challenge28.py
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    .gitignore
    modified:   Challenge28.py
    deleted:    ch28_NN.py
    deleted:    requirements.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .gitignore
    ch28_NN.py
    requirements.txt

$ git add --all
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   Challenge28.py
    modified:   ch28_NN.py

$ git add Challenge28.py
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    .gitignore
    deleted:    Challenge28.py
    deleted:    ch28_NN.py
    deleted:    requirements.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .gitignore
    Challenge28.py
    ch28_NN.py
    requirements.txt

$ git add -A
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    .gitignore
    deleted:    Challenge28.py
    deleted:    ch28_NN.py
    deleted:    requirements.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .gitignore
    Challenge28.py
    ch28_NN.py
    requirements.txt

$ git add --all
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   Challenge28.py
    modified:   ch28_NN.py