git status:如何显示将在子目录中添加(暂存)的文件?

问题描述 投票:0回答:6

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

我有几种通配模式

.gitignore
来排除子目录中的文件。但是,当我执行
git status
在暂存任何内容之前时,git status 只显示将添加的子文件夹的名称,而不具体说明如果我执行
git add .
将添加(暂存)每个子目录中的哪些文件。

有趣的是,

git status
明确了在我使用git add .暂存文件后将要
提交
的文件。

是否有要求

git status
明确说明将要 暂存 的文件?

git version-control
6个回答
225
投票

尝试:

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 配置变量更改默认值。


20
投票

您可以简单地使用

git add --dry-run .

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

.gitignore
时添加的任何子目录中的任何文件的列表。


7
投票

git ls-files -o --exclude-standard

工作树中未暂存的每条路径 (

-o
) 并且不会被
git add
(
--exclude-standard
) 忽略。


0
投票

如何将

.gitignore
文件放入您的子目录中,而不是沿着

# Ignore everything in this directory
*
# Except these file
!.gitignore
!file1
!file2
!file3

-1
投票

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

改为 -o 使用 -C --缓存 在输出中显示缓存的文件(默认)

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

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


-1
投票

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

git config --global core.autocrlf true

但是不要只是运行这个命令,在执行之前要进行验证。使用

git diff
,如果大多数文件没有显示任何差异,则这是由于行结束造成的。好好利用吧。

© www.soinside.com 2019 - 2024. All rights reserved.