git如何忽略指定文件以及gitignore相关知识

git如何忽略指定文件

文章概要:本文主要介绍了git中如何忽略指定文件,包括已经commit了的文件。解释了gitignore文件的写法以及提供了常见的gitignore模版。
本文内容来自:谷流仓AI - ai.guliucang.com

在平常写代码使用git的过程中,我们项目有些文件是不适合提交到仓库的,因此需要让git忽略这些文件, 解除对这些文件的跟踪。文末附录部分会附上一些常见的前后端需要忽略的文件。下面开始讲解如何操作:

一、修改.gitignore文件

  1. 创建.gitignore文件
    一般在创建项目的时候会自动在项目根目录创建.gitignore文件,正如其名称,这个文件就是用来指定忽略跟踪哪些文件的。如果没有这个文件,就在仓库的根目录创建一个。

  2. 将需要的解除跟踪的文件或者文件夹加入.gitignore文件中
    比如项目中node_modules文件夹不需要追踪,那么就可以在.gitignore文件中加入node_modules即可。

  3. 如果文件已经commit了,那么还需要删除在git中的记录,输入如下命令

    shell 复制代码
    git rm --cached 你的文件

    比如删除src/main/resources/application-prod.yml文件的跟踪:

    shell 复制代码
    git rm --cached src/main/resources/application-prod.yml

    然后提交修改即可:

    shell 复制代码
    git add .gitignore
    git commit -m "更新.gitignore以忽略特定文件"

二、详解.gitignore文件

.gitignore 文件用于告诉 Git 哪些文件或目录是不需要加入版本控制的,即可以被忽略的。这对于排除编译产物、日志文件或者包管理器下载的依赖等是非常有用的。.gitignore 支持以下规则:

  1. 空行 或者以 # 开头的行会被忽略。
  2. 可以使用标准的 glob 模式匹配。
    • 星号 * 匹配零个或多个任意字符
    • [abc] 匹配任何一个列在括号中的字符(例如:a、b 或 c)
    • 问号 ? 匹配一个任意字符
    • 如果在方括号表达式中使用短划线(如 [0-9]),表示范围(例如:匹配任何数字)。
    • 使用双星号 ** 表示匹配任意中间目录,例如 a/**/z 可以匹配 a/z, a/b/z, 或 a/b/c/z
  3. 正斜杠 / 用来防止递归。
  4. 要忽略指定路径下的文件,可以在路径前加上斜杠 /(相对于 .gitignore 文件所在位置),比如 /temp/* 仅忽略项目根目录下的 temp 目录内的所有文件。
  5. 要包含特定文件或目录,请在模式前加上感叹号 ! 来取反。

你可以查阅更多 .gitignore 规则和使用方法:

  • Git 官方文档 : 访问 Git 官网 的文档部分并搜索 .gitignore, 其中提供了关于 .gitignore 文件如何工作和如何编写规则的官方说明。
  • GitHub 的 .gitignore 模板 : GitHub 提供了各种语言和环境下通用的 .gitignore 模板。你可以访问 github/gitignore 这个仓库来找到适合你项目需求的模板。

记得,在创建新仓库或向现有仓库添加新类型文件时,正确设置 .gitignore 是一个好习惯,可以避免一些不必要的问题。

三、常见的.gitignore模版

  1. 前端项目通用模版
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
  1. 常见后端模版(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
  1. 常见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
相关推荐
xianwu5431 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio3 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。4 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie65 小时前
在IDEA中使用Git
java·git
晓理紫14 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿16 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git
_OLi_1 天前
IDEA中新建与切换Git分支
java·spring boot·git
PyAIGCMaster1 天前
ubuntu下安装 git 及部署cosyvoice(1)
git
维__kxs76671 天前
小程序 + AI 自动直播:一部手机开启抖音挂载小程序流量主变现之旅
git·eclipse
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ2 天前
GIT GUI和 GIT bash区别
开发语言·git·bash