Ignore File 忽略文件
Git 忽略规则
在 git 中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中。实际上 .gitignore
可以放在任何子目录中, .gitignore
对当前目录和当前目录的子目录有效。
.gitignore 文件的方法(如果没有这个文件,则需自己手工建立此文件)。这个文件每一
行保存了一个匹配的规则例如:
# 此为注释 – 将被 Git 忽略
*.sample # 忽略所有 .sample 结尾的文件
!lib.sample # 但 lib.sample 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
- 忽略路径的根是当前目录,例如'/TODO'是忽略当前目录下的 TOTO 目录下的所有文件,而不是系统根目录。
- 可以使用通配符,参见 Linux 手册: glob(7)。例如:星号(
*
)代表任意多字符,问号代表一个任意字符,方括号内代表可选字符范围。 - 如果名称的最后一个字符是
/
, 表示要忽略的是整个目录,同名文件不忽略。否则,同名的目录和文件都忽略。 - 通过在名称前加一个感叹号(
!
),表示不忽略。
对某个文件取消跟踪,这种方式用于已经 add 了,但不想 cimmit,可以删除添加。
- git rm --cached readme1.txt 删除 readme1.txt 的跟踪,并保留在本地。
- git rm --f readme1.txt 删除 readme1.txt 的跟踪,并且删除本地文件。
然后 git commit 即可。但是 git status 查看状态时还是会列出来
Git 忽略规则和 .gitignore 规则不生效的解决办法
.gitignore 规则不生效的解决办法
把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore 只能
忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore 是
无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
独享式忽略
.gitignore
文件默认会被添加到版本库中,这样在别人获取代码时,会一起得到 .gitignore
文件。 所以称之为“共享式”忽略,与之对应的忽略“独享”式忽略,独享式的忽略就不会因为因为版本共享给他人。只在本地版本库中生效。独享式忽略有两种。
- 一种是针对具体版本库的忽略,即在版本库 .git 目录下的一个文件
.git/info/exclude
来设置文件忽略。 - 另一种是全局的“独享式”忽略。 即通过 Git 的配置变量 core.excludesfile 指定一个忽略文件,其设置的忽略在其作用域有效。
忽略已经提交的
忽略已经提交的,需要将文件从跟踪中删除,然后提交一个新的节点。
git rm --cached -r .idea
git add .
git commit -m "ignore track file"
git rm -r --cached . //不删除本地文件
git rm -r --f . //删除本地文件,会将工作区中的文件全部删除。
需要注意的是,即便不删除本地文件,在向远程推的时候,也会导致文件被删除,这是因为提交节点里被删除了。如果想要保留文件,例如服务器上的文件,需要先备份文件再推送,或者从历史节点中找回。
又时候,想要改变 ignore 文件的整个内容,这时候由于添加的比较多,不知道添加了哪些文件是已经跟踪了的。 无法一一清楚跟踪的文件。可以使用如下步骤,先全部清楚,然后取消非 ignore 的文件的清除操作
git rm -r --cached . # 由于是目录,需要加 -r
这时候,所有的文件都被 delete 掉了
git status
不确定从新 commit 会不会把新的文件都给提交成自己的文件,所以不能提交,可以取消不是 ignore 的更改。
git add .
git checkout .
然后将剩下的被删除的文件提交即可
git commit -m "ignore file"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论