为什么Git会忽略这些文件夹?

9

我在 Git 中添加了一个 Laravel 应用程序,以便将其推送到 Bitbucket。 在根目录下,我运行了 git add -A 并在远程服务器上推送。 我检查了一下它并没有发送所有文件夹; 例如,它根本没有添加 vendor 文件夹。 怎么样才能确保添加了所有子文件夹呢? 当我运行 git status 时,它会显示:

# On branch master
nothing to commit, working directory clean

更新

我运行了git status --ignore命令,并列出了以下文件:

stocktrack/app/storage/logs/laravel.log
stocktrack/app/storage/meta/services.json
stocktrack/app/storage/sessions/cdf664ccf42d040bc92d76418f736cc78e20d77a
stocktrack/app/storage/views/81774cd762e1fa0174ad42e0b0d53196
stocktrack/bootstrap/compiled.php
stocktrack/composer.lock
stocktrack/vendor/

.gitignore文件中,我只添加了.idea。为什么其他的被忽略了呢?

2
注意:GIT_TRACE_EXCLUDE=1 git status很快(git 2.8,2016年3月)将成为调试.gitignore规则的另一种方式。请参见https://dev59.com/jWct5IYBdhLWcg3wXsQy#18953923。 - VonC
4个回答

20
你可以使用git check-ignore来判断 Git 是否忽略了某个路径。
此外,check-ignore提供一个-v--verbose)选项,可以告诉你忽略该文件的模式以及它的位置。
假设你有一个具有以下目录结构的代码库。
bar/test/important
foo/a.tmp
foo/b

还有这个.gitignore文件。

bar/
foo/*.tmp

你想知道为什么位于bar/test/目录下的important文件被忽略了。

这只是一个相当平淡的例子,它只是用来说明这个概念。

现在让我们检查哪个模式忽略了你的important文件。

$ git check-ignore --verbose bar/test/important
.gitignore:1:bar/       bar/test/important

正如您所看到的,check-ignore 告诉您,在第一行中,您的 .gitignore 文件中的模式 bar/ 忽略了相关路径。


4

git add --force <具体文件夹> 对我很有用。


1
这只是治疗症状的方法。更有意义的做法是从根本上解决问题。请查看我的答案 - Sascha Wolf
这不是一个永久性的解决方案。问题将在下一个分支上再次出现。 - IgorGanapolsky

1
我遇到的问题,很可能你也遇到了,就是在.git/info/exclude文件中列出了这些文件夹。我必须将它们从中删除。然后我运行了以下命令:
  1. git rm -r -f --cached .
  2. git add .

-1

看起来 .gitignore 起作用了。

检查你的代码库根目录。你会发现一个名为 .gitignore 的文件,其中包含需要被忽略的文件名。


更新的问题。gitIgnore没有必需的模式。 - Volatil3
你可能需要全局的gitignore。https://dev59.com/b2s05IYBdhLWcg3wR_63 - shirakia

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