git - 检查 gitignore 将跟踪哪些文件
问题描述
我想要一个基于我编写的文件的工作树中将被跟踪的所有文件的列表(例如,git add -A
如果我的工作树中的每个文件都已更改,则会添加).gitignore
。
解决方案
这里必须小心,因为git add -A
标志在 Git 1.x 和 Git 2.x 之间改变了含义。请参阅“git add -A”和“git add”之间的区别。并向下滚动到此答案(或单击此链接)以了解我的意思。
对于 Git 2.x,已经跟踪的文件(已经在索引中)将继续在索引中。使用-A
将忽略工作树中丢失的任何文件。(对于 1.x,使用-A
将从工作树中丢失的索引文件中删除。)
此时您可以做几件不同的事情,具体取决于您想要的结果,主要以 为中心git ls-files
,其中:
- 读取索引,所以它现在知道里面有什么
- 可选地读取工作树,以便它也知道那里有什么
- 可选择读取指定的排除文件或标准的排除文件
该命令可以限制为显示:
- 现有的跟踪文件:
-c
或--cached
- 已跟踪但已在工作树中修改的文件:
-m
或--modified
- 工作树中但不在索引中的文件(未跟踪):
-o
或--others
- 被或将被忽略的文件:
-i
或--ignored
必须将这些选项与 结合使用--exclude-standard
才能git ls-files
遵守与git add
. 所以:
git ls-files --exclude-standard --other
将为您提供当前未跟踪但将由git add -A
. 它不会为您提供当前跟踪的文件,也将由git add -A
;添加。要获得这些,请使用git ls-files --modified
. (假设所有文件都已被修改,请使用--cached
- 但这不会考虑丢失的工作树文件。如果你想这样做,它相当棘手,你最好的选择是使用 git diff ,或其变体之一,比较索引和工作树,使用差异过滤器来检测已删除的文件。)
(结合这两个列表来获取所有内容。)
推荐阅读
- python - 在货币价值上放置适当的零
- javascript - 节点将函数名称从文件推送到数组
- android - FragmentManager 在 Fragment 内执行 biometricPrompt?.authenticate(promptInfo) 时已经在执行事务
- c - 在 C 中实现向量(动态数组) - 函数和主文件
- php - 如何修复 Heroku 无法识别我要部署的 PHP Web 应用程序
- ios - NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9802) Xamarin.Forms IOS
- excel - Excel:如何在自动更新的文件夹中制作文件夹列表
- c - 在 C 中操作链表时如何解决此段错误问题?
- r - 每周从 user_id 和 date 查找新的活跃用户
- html - 背景图像调整大小改变了android中的视图