Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.gitignore 的用法 | Git 入门(五) #14

Open
leeduckgo opened this issue May 10, 2020 · 0 comments
Open

.gitignore 的用法 | Git 入门(五) #14

leeduckgo opened this issue May 10, 2020 · 0 comments

Comments

@leeduckgo
Copy link
Member

作者:付子旺

gitignore - Specifies intentionally untracked files to ignore

在使用Git过程中,一些依赖文件或编译文件不要提交到代码仓库,此时就要设置相应的忽略规则,来忽略这些文件的提交。

github上提供了各个语言对应的.gitignore文件:https://github.com/github/gitignore

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

.gitignore语法规则

  • 空行或是以#开头的行即注释行将被忽略
  • 以斜杠 “/” 结尾表示目录
  • 以星号 “*” 通配多个字符
  • 以问号 “?” 通配单个字符
  • 以方括号 “[]” 包含单个字符的匹配列表
  • 以叹号 “!” 表示不忽略(跟踪)匹配到的文件或目录

git 对于 .gitignore配置文件是按行从上到下进行规则匹配的

# production 忽略整个文件
/build

#  忽略所有.zip文件和以单个字符开头的.txt文件
*.zip
?.txt

# 放弃忽略某个具体的文件
!/build/index.py

git 详细忽略规则https://git-scm.com/docs/gitignore

git 忽略规则优先级

在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低)

  • 从命令行中读取可用的忽略规则
  • 当前目录定义的规则
  • 父级目录定义的规则,依次地推
  • $GIT_DIR/info/exclude 文件中定义的规则
  • core.excludesfile中定义的全局规则

.gitignore规则不生效

前文说到,.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

经检测以上方法会将本地缓存的所有文件删除,慎用!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant