Git不会添加修改过的文件

时间:2014-09-25 22:36:31

标签: git git-add

不知道为什么会这样:

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该文件都不会被添加到提交中。有什么帮助吗?

13 个答案:

答案 0 :(得分:18)

我想也许Jubobs&#39;评论是正确的。是你的&#34;文件&#34;子模块?

普通文件不应出现(提交或放弃子模块中未跟踪或修改的内容)这一行。

以下是我从git状态获得的信息:

$ 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)

        modified:   README.txt

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

在我的README.txt

之后,你不会看到(在子模块中提交或丢弃未跟踪或修改的内容)(修改内容)

所以你可能需要做git推荐的工作,处理子模块中的内容。

编辑:以前我认为&#34; git add。&#34;可以解决这个问题,但现在我认为不可以。

答案 1 :(得分:4)

您可以通过三种方式添加文件

  • 如果要添加单个文件,请使用git add filenamewithpath
  • 如果要添加多个文件,请使用git add .
  • 一次可以添加所有文件,您可以通过此命令编写提交消息

    git commit -a -m 'your commit message'

答案 2 :(得分:4)

我有同样的问题。我个人的“啊哈”是我以前在子文件夹中添加了跟踪.git存储库文件,因此它被视为子模块。删除子文件夹中的.git后,它很高兴地加入了我的其余文件夹,作为根文件夹中一个.git文件的一部分。我甚至都不知道子模块,所以也许这对某些人也有帮助。

答案 3 :(得分:3)

不确定这是否相关,但在Linux和Windows之间切换时遇到了同样的问题。我有2个文件,一个WEB.config和另一个web.config,因为Windows不区分大小写似乎已经混淆了。我重命名了提交重命名的文件并再次提交似乎有效。

答案 4 :(得分:3)

有同样的问题,不知道为什么但.h文件不会提交。

所以,我重命名了它,这个已删除的原文并创建了一个关于git的新东西。然后我提交了这些更改。 Git很高兴。

然后我重新命名了。 git很高兴承诺。

无法解释为什么会发生这种情况,但至少它是固定的。

答案 5 :(得分:1)

伙计们!在我的情况下,它可能会对某人有所帮助,因为git不想添加并提交文件,因为我试图从不包含git文件的深层嵌套文件夹中进行提交和添加。当我返回到根文件夹时,它很容易添加和提交。

答案 6 :(得分:0)

我昨天发生了这件事,在我的情况下,原因是因为我试图从我项目的子目录中调用git。然后我使用&#34; git add --all &#34;它解决了这个问题,我也去了正确的目录,也解决了问题。

但我没有得到的是:为什么在世界上git status和git --all命令仍在从子目录中运行? .-。

希望有帮助=)

答案 7 :(得分:0)

这件事发生在我身上。无论我做了什么,文件都出现了修改。当看到差异时,它就像我在之前的提交中所做的那样被改变了。即使在第一次提交后,该文件似乎总是被修改。最后我删除了该文件。承诺删除,似乎我删除了两个文件。然后再次添加文件。很奇怪,我以前从未见过。

答案 8 :(得分:0)

我有同样的错误:

fatal: Cannot update paths and switch to branch 'develop' at the same time.

然后使用git status

$ git status
warning: LF will be replaced by CRLF in .gitmodules.
The file will have its original line endings in your working directory.
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   .gitmodules
        new file:   submodule_dir

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:   submodule_dir (modified content)

git diff显示:

$ git diff
diff --git a/somedir b/somedir
--- a/somedir
+++ b/somedir
@@ -1 +1 @@
-Subproject commit some-commit-hash
+Subproject commit some-commit-hash-dirty

问题是我试图添加一个在子模块库中尚不存在的分支。

答案 9 :(得分:0)

另一种选择是同一个文件存在于存储中并且与当前副本冲突。

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

答案 10 :(得分:0)

git reset .

这对我有用。 unstaging所有准备好提交(修改后的内容)文件的文件

答案 11 :(得分:0)

因此,基本上,如果遇到(commit or discard the untracked or modified content in submodules),则意味着子文件夹中有{内部存储库} .git文件;并且文件的最新更改尚未注册到这些文件(内部存储库)。

  1. 一种方法是更新(内部存储库),即git [add & commit]内部存储库中的所有更改。

  1. 丢弃内部存储库。

答案 12 :(得分:-1)

备份有问题的文件。删除那些文件集,提交删除,一次推送到原点。

从备份中添加文件并发出新的添加,提交和推送。问题将得到解决。