为什么Git会自动忽略大多数节点文件?

我是Node.js和NPM的新手,我正在写一个网站并在Git上添加它(这是公开的,但仅仅是因为我不想为私人主机付费)。 当我将文件推送到Github时,Git会自动忽略与Node相关的每个文件,而我无法弄清楚为什么。 具体来说,它似乎忽略了所有node_modules文件夹, Gruntfile.js es和package.json 。 这是因为Git还是Node,还是我的一个虚拟移动?

当我做git add -Agit add .git add -u ,所有这些应该包括所有添加和删除的文件(我认为),然后使用git commitgit commit -a我得到这样的东西:

 $ git commit -m "hopefully added all files" On branch dev Your branch is up-to-date with 'origin/dev'. Untracked files: .jshintrc app/ libs/Gruntfile.js libs/node_modules/.bin/_mocha libs/node_modules/.bin/_mocha.cmd libs/node_modules/.bin/mocha etc. nothing added to commit but untracked files present 

我试图在根文件夹的任何位置search.gitignore ,但是我能find的是我的Bootstrap文件夹中的gitignore文件(为什么在那里?),但是如果我是正确的,那应该不会影响上面的文件夹它? 它有规则node_modules,但不是Gruntfile.js或package.json,当我评论它的所有规则的文件仍然被忽略。

这是一个子模块,因此它使用父项目的.git文件夹。 该父项目在.git/info/exclude只有注释,并且没有.gitignore 。 没有其他子模块也有.gitignore

那为什么会这样呢?

编辑: git cherrygit diff都没有显示任何东西。 git status显示:

 $ git status On branch dev Your branch is up-to-date with 'origin/dev'. Untracked files: (use "git add <file>..." to include in what wi libs/Gruntfile.js libs/node_modules/.bin/_mocha libs/node_modules/.bin/_mocha.cmd libs/node_modules/.bin/mocha libs/node_modules/.bin/mocha.cmd libs/node_modules/grunt-contrib-compass/ etc. nothing added to commit but untracked files present (use "git add" to track) 

编辑2:这个网站是一个子模块,但我从来没有使用.gitignore.git/info/exclude超级项目或任何其他子模块。 不过,这与这个问题有什么关系?

编辑3:正如我所说, git add -Agit add .git add -u从不添加任何节点文件或文件夹,但添加单个文件和文件夹。 这使得它更怪。

如果我理解正确,你有你的项目git回购,其中包含子模块回购。 你可以试试这个工作stream程吗?

  1. 在某个文件夹中克隆你的子模块回购
  2. 在相同的文件夹克隆你项目回购和运行
  3. cd project-repo
  4. git submodule init
  5. git submodule update
  6. cd ../submodule-repo
  7. 进行更改和git commit -a; git push git commit -a; git push
  8. cd ../project-repo/submoduleDir
  9. git pull

现在,您应该有父repo指向新的子模块修订版,并且当您cd到project-repo时,您可以提交此更改(project-repo指向最新的submodule-repo修订版)。

更多关于这个主题可以在这里find:
* http://git-scm.com/docs/git-submodule
* http://joncairns.com/2011/10/how-to-use-git-submodules/

希望能帮助到你。