git add -A不会添加目录中的所有修改的文件

我想要添加所有的文件,无论是删除,创build,修改,未跟踪等? 我只是不想git添加所有我的文件每一次 。 我试过git add -A但它不是在文件夹中添加修改的文件。

这是我的项目中的初始git status

 Rakib-MacBook-Pro:my-xcode-practice rakib$ 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: BankAccount (modified content, untracked content) # modified: BuckysButtons (modified content, untracked content) # modified: multiview (modified content, untracked content) # modified: rotator (modified content, untracked content) # modified: segmentedControls (modified content, untracked content) # no changes added to commit (use "git add" and/or "git commit -a") 

然后我把git add -A

 Rakib-MacBook-Pro:my-xcode-practice rakib$ git add -A 

然后这里是新的状态git add -A

 Rakib-MacBook-Pro:my-xcode-practice rakib$ 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: BankAccount (modified content, untracked content) # modified: BuckysButtons (modified content, untracked content) # modified: multiview (modified content, untracked content) # modified: rotator (modified content, untracked content) # modified: segmentedControls (modified content, untracked content) # no changes added to commit (use "git add" and/or "git commit -a") 

你可以看到git status没有变化。 我如何解决这个问题?

我也试过git add . – 它没有帮助

我也试过git add * – 它没有帮助

这里的问题是BankAccountBuckysButtonsmultiviewrotatorsegmentedControls都是git子模块,它们在很多方面都像独立的存储库一样。

如果你想要做的是运行git add -A . 在每个子模块中,你可以这样做:

 git submodule foreach --recursive git add -A . 

然后你可以在每个子模块中创build一个提交:

 git submodule foreach --recursive "git commit -m 'Committing in a submodule'" 

(如果没有其他子模块嵌套在这些子模块中,则不需要使用--recursive选项。)

不过 ,我不build议这样做。 您应该小心地依次更改为每个子模块,并考虑如何更新它们,将每个子模块视为独立的存储库。 然后在testing整个项目与每个子模块的新版本一起工作时,只在主项目中提交这些新的子模块版本。


更新:从错误消息看来,你已经在下面的评论中引用了你已经直接添加了这些其他的git仓库,而不是子模块。 如果您将另一个git存储库复制到您的存储库中,然后只使用git addgit add它,而不是使用git submodule add <REPOSITORY-URL>添加它,就会发生这种情况。 如果你真的打算将它们存储为子模块,我build议将它们移出存储库,提交它们的删除,然后将它们作为具有git submodule add

我刚刚重新创build了这个意外。

我在另一个文件夹中复制了一个项目到我的新的git仓库中。 我不打算把它作为一个子模块,我打算用它作为一个新项目的起点。 我拷贝的这个项目现在是我主要的git repo的一个子文件夹。 删除subfolder/.git/

 rm -rf subfolder/.git 

然后事情仍然怪异…

 git status 

没有提交。 嗯…所有这些文件呢?

我真的不知道如何用git正确地解决这个问题,所以我复制了目录,并删除了原文。

 cp subfolder newsubfolder rm -rf subfolder 

然后我添加了所有更改的文件,提交并推送。

 git add -A git commit -am 'i did something and there are now files' git push origin <branchName> 

我解决了这个问题,删除假设的子模块内部和项目根内的.git文件夹,然后做一个新的'git init'

对我来说,一个非常简单的修复 – 我打开了项目子目录中的Git Bash。

打开Bash并执行根目录中的命令来解决这个问题; git add -A . 按预期工作。

我们引用-A的文档:

  -A, --all Like -u, but match <filepattern> against files in the working tree in addition to the index. That means that it will find new files as well as staging modified content and removing files that are no longer in the working tree. 

注意关键词: <filepattern> 。 你需要给它一个recursion匹配的模式。

我有一个类似的问题,在Windows上我git add --all留下一些文件untracked,问题是有几个文件与不同的套pipe'test.php'和'Test.php'所以git跟踪Test.php而不是小写版本的。

这可能有助于未来的人,并保存一些头部划痕。

BitBucket在过去的几天里有过这个问题。 我正在处理由Visual Studio 2013 Community Edition在其存储库中进行跟踪的项目。

然而,我偶尔使用Git Bash来手动执行提交,这就是当事情开始出错,文件被忽略的时候。 试图reclone回购,但这并没有帮助。

最后,我发现如果你进入Visual Studio> Team Explorer>点击Sync,Visual Studio将执行一次pull操作,然后提交并推送任何未跟踪的文件。

如果你喜欢像我这样的控制台,你可以通过Git Bash手动执行。

希望这有助于某人。

我有这个问题,因为我克隆了别人的存储库到我的项目。 当我克隆它时,他们的项目中已经存在.git和.gitignore文件夹/文件。 在删除这些已有的git文件并重新开始之后,它可以正常工作。

发生此错误的原因是您已经添加了一个已经与另一个github存储库链接的文件夹。 您正在使用的父文件夹与其他一些存储库相关联。 要解决此问题,请首先将要上传的文件从BankAccount文件夹复制到github,然后删除BankAccount文件夹。 现在创build一个新文件夹,然后粘贴文件。 这是由于git子模块自动被前面的文件夹中存在的git所占用。 现在你可以做了

 git add . git status