【问题标题】:Why does Git automatically ignore most Node files?为什么 Git 会自动忽略大多数 Node 文件?
【发布时间】:2014-01-27 08:26:30
【问题描述】:

我是 Node.js 和 NPM 的新手,我正在尝试编写一个网站并将其添加到 Git 上(它是公开的,但只是因为我不想为私人托管付费)。当我将文件推送到 Github 时,Git 会自动忽略几乎所有与 Node 相关的文件,我不知道为什么。具体来说,它似乎忽略了所有node_modules 文件夹、Gruntfile.jses 和package.jsons。这是因为 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

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

这是一个子模块,所以它使用父项目的.git 文件夹。该父项目在其.git/info/exclude 中只有 cmets,也没有.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 永远不会从节点文件或文件夹中添加任何内容,但添加单个文件和文件夹会。这让它更奇怪了。

【问题讨论】:

  • .gitignore 中的任何内容?
  • 我没有.gitignore,但正如我在帖子中所说,Bootstrap 似乎添加了一个。
  • 那里列出的未跟踪文件是否都是您打算包含的文件?他们在那里展示的事实意味着 git 并没有通过 .gitignore 忽略它们,它们只是还没有被提交。 git add -A .(不要忘记'.')应该已经成功了。你能不能再试一次,然后把git status的输出贴出来
  • 你看我的帖子了吗?我回答了你刚才提出的所有问题。我试过git add -A 以及git add .git add -ugit status 显示的文件与 git commit 几乎相同,但我将输出添加到我的帖子中以防万一。
  • 如果文件被忽略,无论是通过.gitignore.git/info/exclude 还是通过.git 系统设置本身,它们都不会在您的状态下显示-all-,即使@ 987654356@。因此,它们当然不会被忽略,并且使用 git add -Agit add &lt;file&gt; 添加它们就可以正常工作,除非您安装的 git 已损坏。

标签: node.js git twitter-bootstrap npm windows-8.1


【解决方案1】:

如果我理解正确,您的项目 git 存储库中包含子模块存储库。你能试试这个工作流程吗?

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

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

可以在此处找到有关此主题的更多信息:
* http://git-scm.com/docs/git-submodule
* http://joncairns.com/2011/10/how-to-use-git-submodules/

希望对你有帮助。

【讨论】:

  • 最奇怪的是,当我不久前删除并重新克隆了 repo 时,所有问题都消失了。我想我们永远不会知道到底发生了什么。我想我会接受你的问题,因为这是我修复它的方法。还是谢谢。
猜你喜欢
  • 2020-12-10
  • 2015-04-20
  • 1970-01-01
  • 2010-11-22
  • 2020-10-25
  • 2011-04-19
  • 2014-06-15
  • 2017-09-06
  • 1970-01-01
相关资源
最近更新 更多