假设我在一个文件夹中启动了一个 git 存储库,其中有几个子目录。
我有几种通配模式
.gitignore
来排除子目录中的文件。但是,当我执行 git status
在暂存任何内容之前时,git status 只显示将添加的子文件夹的名称,而不具体说明如果我执行 git add .
将添加(暂存)每个子目录中的哪些文件。
有趣的是,
git status
明确了在我使用git add .
暂存文件后将要提交的文件。
是否有要求
git status
明确说明将要 暂存 的文件?
尝试:
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
配置变量更改默认值。
您可以简单地使用
git add --dry-run .
在存储库的根目录中,它为您提供了在考虑
.gitignore
时添加的任何子目录中的任何文件的列表。
如何将
.gitignore
文件放入您的子目录中,而不是沿着 行
# Ignore everything in this directory
*
# Except these file
!.gitignore
!file1
!file2
!file3
使用git命令 git ls-文件-o 列出未跟踪的文件
改为 -o 使用 -C --缓存 在输出中显示缓存的文件(默认)
-d --删除 在输出中显示已删除的文件
-m - 修改的 在输出中显示修改后的文件
很有可能是由于行结束造成的。解决方案:
git config --global core.autocrlf true
但是不要只是运行这个命令,在执行之前要进行验证。使用
git diff
,如果大多数文件没有显示任何差异,则这是由于行结束造成的。好好利用吧。