Git不会添加修改过的文件。

29

不知道为什么会发生这种情况:

git status
On branch master
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)
  (commit or discard the untracked or modified content in submodules)

    modified:   file (modified content)

no changes added to commit (use "git add" and/or "git commit -a")
starkers@ubuntu:~/Documents/currentWork/protection_demo$ git add --all
starkers@ubuntu:~/Documents/currentWork/protection_demo$ git status
On branch master
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)
  (commit or discard the untracked or modified content in submodules)

    modified:   file (modified content)

无论我怎么做,git commit -amgit commit -a,文件都不会被添加到提交中。有什么帮助吗?


3
请用以下方式翻译:将“file”替换为涉及文件的完整路径。另外,你是否在使用子模块? - jub0bs
1
你的 .gitignore 文件中是否包含该文件? - chooban
但你不需要使用--force选项吗? - chooban
@chooban 不需要,如果涉及的文件已经被跟踪。这里所涉及的文件被列为“修改”,这表明它是一个被跟踪的文件。 - jub0bs
当然!这会教训我,不应该在午夜后尝试回答问题。 - chooban
显示剩余4条评论
15个回答

0
在我的情况下,我在同一位置有两个文件名相同但大小写不同的文件,git 似乎无法区分它们,因此显示一个拼写错误的文件被修改了(它显示了正确的差异),但我无法将其暂存/提交。对我来说,解决方案是从 git 中删除拼写错误的文件: git rm <拼写错误的文件> 这将同时删除两个文件,因此我需要恢复正确拼写的文件:git checkout <正确拼写的文件>

0
git reset .

这个对我有用。取消暂存所有准备提交的文件(包括修改的内容文件)


0

另一个选项是同一个文件在存储区中,并且与当前副本冲突。

如果是这种情况,git stash drop - 将删除存储区(包括冲突的文件),并允许您将修改后的文件添加到索引中。


0

这可能是由于同一或子文件夹中存在多个git仓库引用之间的冲突。

可以通过以下方式解决:

  1. 未跟踪或修改的文件夹中删除.git子文件夹,
  2. 然后通过git add untrackedfolder再次添加它。

-1

备份有问题的文件。删除这些文件,提交删除操作,并推送到源。

从备份中添加回文件,执行新的添加、提交和推送操作。问题将得到解决。


这个答案是不正确的。你不应该需要删除和重新添加文件到 Git 仓库。正确的答案是被接受的答案,它指出“文件”实际上是一个子模块。标记者/审核员们:对于这样的错误答案,应该进行投票降低分数,而不是删除! - Scott Weldon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接