添加 *,但兄弟姐妹被忽略

Add *, but sibling is being ignored

我在目录中进行了一系列更新并想添加它们,但它们位于我的 .gitignore 中的目录旁边。难道 git add 不应该只是 忽略 而不是抱怨吗?

如何添加所有内容并跳过被忽略的内容?

$ git add assets/*
The following paths are ignored by one of your .gitignore files:
assets/avatars
Use -f if you really want to add them.
fatal: no files added

根据 documentation--ignore-errors 标志只会让命令按照您的意愿工作。

If some files could not be added because of errors indexing them, do not abort the operation, but continue adding the others. The command shall still exit with non-zero status. The configuration variable add.ignoreErrors can be set to true to make this the default behaviour.

更新:

这在这种情况下不起作用,我猜是因为 assets/* 参数被 shell 扩展,因此 git add 接收的实际参数是扩展列表文件和目录等失败是明确的。

我试过这个命令,效果不错:

$ git add assets

即使没有选项 --ignore-errors 也能正常工作,因为它不会尝试在 assets.

下面添加被忽略的目录

当您使用通配符 * 时,它会在 Unix 系统上被您的 shell 扩展。因此,运行 git add assets/* 相当于在 assets/avatars.

下显式添加文件

例如,如果我有两个文件:

assets/file1.txt
assets/avatars/file2.txt

则运行git add assets/*扩展为:

git add assets/file1.txt assets/avatars/file2.txt

所以 git 抱怨你在指示它添加一个被忽略的文件。如果您想避免此消息,您可以引用 * 以允许 git 进行通配。这将指示 git 扩展您的路径,注意 .gitignore 文件。例如:

git add assets/\*

不产生警告,只暂存适当的文件,在这个例子中,assets/file1.txt