git如何忽略指定文件
文章概要:本文主要介绍了git中如何忽略指定文件,包括已经commit了的文件。解释了gitignore文件的写法以及提供了常见的gitignore模版。
本文内容来自:谷流仓AI - ai.guliucang.com
在平常写代码使用git的过程中,我们项目有些文件是不适合提交到仓库的,因此需要让git忽略这些文件, 解除对这些文件的跟踪。文末附录部分会附上一些常见的前后端需要忽略的文件。下面开始讲解如何操作:
一、修改.gitignore
文件
-
创建
.gitignore
文件
一般在创建项目的时候会自动在项目根目录创建.gitignore
文件,正如其名称,这个文件就是用来指定忽略跟踪哪些文件的。如果没有这个文件,就在仓库的根目录创建一个。 -
将需要的解除跟踪的文件或者文件夹加入
.gitignore
文件中
比如项目中node_modules
文件夹不需要追踪,那么就可以在.gitignore
文件中加入node_modules
即可。 -
如果文件已经commit了,那么还需要删除在git中的记录,输入如下命令
shellgit rm --cached 你的文件
比如删除
src/main/resources/application-prod.yml
文件的跟踪:shellgit rm --cached src/main/resources/application-prod.yml
然后提交修改即可:
shellgit add .gitignore git commit -m "更新.gitignore以忽略特定文件"
二、详解.gitignore
文件
.gitignore
文件用于告诉 Git 哪些文件或目录是不需要加入版本控制的,即可以被忽略的。这对于排除编译产物、日志文件或者包管理器下载的依赖等是非常有用的。.gitignore
支持以下规则:
- 空行 或者以
#
开头的行会被忽略。 - 可以使用标准的 glob 模式匹配。
- 星号
*
匹配零个或多个任意字符 [abc]
匹配任何一个列在括号中的字符(例如:a、b 或 c)- 问号
?
匹配一个任意字符 - 如果在方括号表达式中使用短划线(如
[0-9]
),表示范围(例如:匹配任何数字)。 - 使用双星号
**
表示匹配任意中间目录,例如a/**/z
可以匹配a/z
,a/b/z
, 或a/b/c/z
- 星号
- 正斜杠
/
用来防止递归。 - 要忽略指定路径下的文件,可以在路径前加上斜杠
/
(相对于.gitignore
文件所在位置),比如/temp/*
仅忽略项目根目录下的 temp 目录内的所有文件。 - 要包含特定文件或目录,请在模式前加上感叹号
!
来取反。
你可以查阅更多 .gitignore
规则和使用方法:
- Git 官方文档 : 访问 Git 官网 的文档部分并搜索
.gitignore
, 其中提供了关于.gitignore
文件如何工作和如何编写规则的官方说明。 - GitHub 的 .gitignore 模板 : GitHub 提供了各种语言和环境下通用的
.gitignore
模板。你可以访问 github/gitignore 这个仓库来找到适合你项目需求的模板。
记得,在创建新仓库或向现有仓库添加新类型文件时,正确设置 .gitignore
是一个好习惯,可以避免一些不必要的问题。
三、常见的.gitignore
模版
- 前端项目通用模版
shell
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
.DS_Store
dist
dist-ssr
coverage
*.local
# unplugin-auto-import
auto-imports.d.ts
components.d.ts
.eslintrc-auto-import.json
/cypress/videos/
/cypress/screenshots/
# Editor directories and files
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# .env
.env.development
.env.production
- 常见后端模版(JAVA)
shell
HELP.md
/target/
/**/target/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
/build/
### VS Code ###
.vscode/
rebel-remote.xml
rebel.xml
### customize ###
# 如果是上传到公共仓库,像application.yml这种如果写了各种密码信息的就不要上传了
# 留个template就行了
application-dev.yml
application-prod.yml
/logs
# 如果.gitignore文件本身也不想跟踪的话,就把下面的填上
.gitignore
- 常见python项目模版
shell
*.py[cod]
data/*
*.log
venv
.venv
.idea
# C extensions
*.so
# Packages
*.egg
*.egg-info
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
lib
lib64
__pycache__
# Installer logs
docs/_build
build/*
*.buildinfo
# files
*.mp3
*.m4a
*.wav
*.png
*.jpg
*.flac
*.mo