在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。答案 0 :(得分:4)
实际上这是一件非常简单的事情:文件已经在文件名的 end 处提交了一个空格。 显然Windows无法处理这个问题,并且每次都会自动删除空间(克隆后,结账后等)。
所以Git显示了正确的信息,文件"path/to/file1.sql "
已被删除,文件"path/to/file1.sql"
是新的(抱歉这没有显示在问题中,现在我现在更正了显示示例Git输出中的空格。
我一开始没注意到这一点,因为我看到ls
在那里很好,并试图调试所有内容后,我只是在/path/to/
编辑了Linux上目录git status
的内容在Windows中(不可能,除非你通过选择Git输出的正确部分以某种方式注意到该空间)。
我正在执行对文件名的额外检查(在Linux上),感谢Vampire的comment我得到了奇怪的结果
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