111

假设我在一个文件夹中启动了一个 git 存储库,并且其中有几个子目录。

我有几个 globbing 模式.gitignore来排除子目录中的文件。但是,当我在暂存git status 任何内容之前执行此操作时,git status 仅显示将要添加的子文件夹的名称,而没有具体说明如果我这样做,将添加(暂存)每个子目录中的哪些文件git add .

不过有趣git status的是在我使用git add ..

无论如何要求git status明确有关将要上演的文件的文件?

4

6 回答 6

177

尝试:

git status -u

或长格式:

git status --untracked-files

这将显示未跟踪目录中的单个文件。

以下是git-status 手册页-u中选项的详细说明:

-u[<mode>]
--untracked-files[=<mode>]

显示未跟踪的文件。

mode 参数是可选的(默认为all),用于指定对未跟踪文件的处理;-u不使用时,默认为normal,即显示未跟踪的文件和目录。

可能的选项是:

  • no- 不显示未跟踪的文件
  • normal- 显示未跟踪的文件和目录
  • all- 还显示未跟踪目录中的单个文件。

可以使用git-config(1)status.showUntrackedFiles中记录的配置变量更改默认值。

于 2012-10-02T00:56:25.900 回答
15

你可以简单地使用

git add --dry-run .

在存储库的根目录中,它为您提供了在考虑.gitignore.

于 2019-02-12T09:10:18.113 回答
7

git ls-files -o --exclude-standard

工作树中未暂存 ( -o) 且不会被git add( --exclude-standard) 忽略的每条路径。

于 2013-10-05T14:21:54.700 回答
0

如何将.gitignore文件放在子目录中而不是沿着

# Ignore everything in this directory
*
# Except these file
!.gitignore
!file1
!file2
!file3
于 2012-10-01T23:03:42.917 回答
0

很有可能是由于行结束。解决方案:

git config --global core.autocrlf true

但不要只运行这个命令,在执行它之前验证。使用git diff,如果大多数文件显示没有差异,这是由于行结束。好好利用它。

于 2022-01-03T20:39:18.850 回答
-1

使用 git 命令 git ls-files -o 列出未跟踪的文件

相反 -o 使用 -c --cached 在输出中显示缓存文件(默认)

-d --deleted 在输出中显示已删除的文件

-m --modified 在输出中显示修改过的文件

于 2019-02-12T09:20:38.213 回答