一、概念解释
在Git的版本控制中,有三种状态: 已提交(committed)、已修改(modified)、已暂存(staged)。而第四种状态则是untracked。当新建一个文件时,如果不去add和commit,便处于未追踪状态。
未追踪(state: untracked)表示此文件在Git的管理下从未被纳入版本控制中,也就是这个文件不在Git代码库里。通常情况下,我们会忽略一些不需要被版本控制的文件而不做add和commit。
但有时候,不慎将一些个人配置文件、敏感信息文件忘记了add和commit,这时就会造成安全隐患。理解untracked对于排查漏洞和减少安全事故至关重要。
二、解决方法
有时候我们想临时把某些本来未被追踪的文件或目录纳入版本控制,可以使用git add命令添加进暂存区。如果某些文件被添加进来以后,发现这些文件其实不想纳入版本控制,那么可以使用 git rm --cached 命令将其从暂存区移除。
如果想要忽略某个文件或文件夹,可以通过在.gitignore文件中,添加需要忽略的文件名或文件路径,来达到这个目的。
# .gitignore 文件内容 *.log /node_modules/ config.js /secret/
上述.gitignore文件中包含了屏蔽所有.log结尾的文件、屏蔽node_modules目录下的所有文件、屏蔽config.js文件,以及屏蔽secret目录里的所有文件。这样,Git就会自动忽略这些文件或文件夹,无论其状态如何。
三、常见问题及解决方案
1. 如何查看当前文件的状态是否为untracked?
$ git status
可以查看所有文件的状态,包括是否处于untracked状态。
2. 如何将所有的未排除文件设置为纳入版本控制状态?
$ git add .
通过 “.” ,可以将所有未排除的文件添加到版本控制中。
3. 进行忽略文件排除后,之前已经存在的untracked文件是否需要手工纳入版本控制?
需要手工添加到版本控制中。对 untracked 文件手动 git add 后,仅该文件会被纳入版本控制中,其他被逐层排除的文件不会纳入.
四、总结
理解Git工作区中的状态,以及如何切换状态,是我们熟练使用Git的必备技能。尤其对于团队协作、安全等重要环节,更是需要我们加强对Git的掌控。遇到未追踪文件,可以通过手工对其add和commit,或者通过.gitignore文件的配置,实现文件状态的转换。