Sourcetree——使用.gitignore忽略文件或者文件夹

devtools/2025/3/17 2:45:10/

一、为何需要文件忽略机制?

1.1 为什么要会略?

对于开发者而言,明智地选择忽略某些文件类型,能带来三大核心优势:

  • 仓库纯净性:避免二进制文件、编译产物等污染代码库

  • 安全防护:防止敏感信息(如API密钥、数据库凭证)意外泄露

  • 效率提升:减少无意义的版本追踪,加速克隆和拉取操作

1.2 通常忽略那些文件?

典型需忽略文件类型

文件类别常见示例
系统生成文件.DS_StoreThumbs.dbDesktop.ini
编译产物*.class(Java)、*.o(C++)、*.pyc(Python)、/dist/目录
依赖管理目录node_modules/vendor/target/
开发环境文件.idea/.vscode/.env
日志与临时文件*.log*.tmpnpm-debug.log*

示例:

我只修改了.cmd文件,但提交修改的时候,有很多编译产物

二、.gitignore配置深度解析

2.1 文件作用域与优先级

# 层级生效机制(从上到下优先级递减)
1. 项目根目录/.gitignore         # 作用于整个项目
2. 子目录/.gitignore                # 作用于该目录及其子目录
3. $GIT_DIR/info/exclude      # 本地仓库级配置
4. ~/.gitignore_global             # 全局配置(需执行git config --global core.excludesfile ~/.gitignore_global)

2.2 高级语法规则

# 基础匹配
*.log                    # 所有.log文件
!error.log             # 排除规则(保留error.log)

# 目录匹配
build/                  # 忽略所有build目录
doc/*.txt             # 忽略doc目录下txt文件(不递归子目录)

# 通配符扩展
temp?                # 匹配temp后接一个字符的文件(如tempa、temp1)
config.[tj]s          # 匹配config.ts和config.js

# 注释与范围
[0-9].csv             # 匹配数字开头的csv文件
# 重要:不要提交密钥文件
secret.key

.gitignore 的规则是 从上到下逐行匹配 的,后面的规则可以覆盖前面的规则。

否定规则(!)是唯一可以覆盖前面忽略规则的方式。 

三、Sourcetree的可视化设置

3. 1首次提交.gitignore

3.1.1点击设置

3.1.2在仓库设置中选择高级,点击编辑。 

3.3.3在gitignore中添加需要忽略的文件。

可以使用gitignore.io生成模板

以下是一个常用的.gitignore文件模板,可根据个人项目需求,按照.gitignore配置的语法规则2.2,进行增删改查。

# macOS system files
.DS_Store
.AppleDouble
.LSOverride
Icon
._*# IDE - IntelliJ IDEA
.idea/
*.iml
*.iws
*.ipr
out/
.idea_modules/# IDE - VSCode
.vscode/
*.code-workspace# Obsidian files
.obsidian/# Compiled files
*.class
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar# Logs and databases
*.log
*.sqlite
*.db# Node
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*# Python
__pycache__/
*.py[cod]
*$py.class
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg# Temporary files
*.swp
*.swo
*~

然后重新提交就好啦,这里.gitignore文件也要提交。

一定注意.gitignore文件要提交成功下次才能忽略设置的文件或目录! 

 3.2对于已经被git追踪的文件

如果是第一次提交,就会发现忽略文件已经没有了,不是第一次的这个时候你要是提交,就会发现你想要忽略的文件要是有改动,依然让你提交,这是因为这些文件已经加入git的版本控制库了,仅仅添加.gitignore文件是不够的,需要先清除缓存才行。

3.2.1清除Git缓存:

# 删除Git缓存(不会删除实际文件)
git rm -r --cached .

3.2.2 添加新的.gitignore文件,提交更改

# 添加.gitignore文件到Git
git add .gitignore# 添加其他文件
git add .# 提交更改
git commit -m "Add .gitignore file and remove ignored files from git"

3.3.3 推送到远程仓库

# 推送到远程仓库
git push origin master  # 或者其他分支名

 示例问题解决:(这里我尝试修改了其他文件)

参考连接:

1.【Git】如何添加和更新.gitignore文件_git添加ignore-CSDN博客

2.Sourcetree软件中添加git的.gitignore文件忽略某些文件提交_sourcetree忽略文件-CSDN博客 


http://www.ppmy.cn/devtools/167712.html

相关文章

Linux 找回 Root 密码(多发行版本)

适用于大多数 Linux 发行版(Ubuntu、CentOS、Debian 等),无需第三方工具,需物理接触服务器或系统启动权限。 步骤 1:重启系统并进入 GRUB 引导菜单 重启系统,看到启动画面时,快速按下 Esc、Shi…

AI辅助编程!DeepSeek vs ChatGPT- AI在地图网络分析(最佳路径)上的应用

你是否好奇像DeepSeek和ChatGPT这样的AI语言模型在生成创建网络地图的Python代码时表现如何?在本教程中,我将对它们进行测试! 仅需一个简单提示,这些大语言模型就能生成代码:接收一个起点和多个目的地地址,…

prometheus-helm的使用

1、部署Prometheus监控平台 1、下载安装Prometheus (当前集群版本1.26.3) git clone https://github.com/prometheus-operator/kube-prometheus.git -b release-0.12 安装: cd kube-prometheus/ 创建命名空间和crd: kubectl …

【VUE】day03-vue过滤器、计算属性、vue-cli、vue组件

【VUE】day03-vue过滤器、计算属性、vue-cli、vue组件 1. 过滤器2.使用vue.filter定义全局过滤器3. 使用全局过滤器格式化时间4. 过滤器的其他用法5. 侦听器的基本用法5.1 进入页面就被侦听 6. 计算属性6.1 了解计算属性的语法和特点 7. axios8. vue-cli8.1 安装与使用8.2 创建…

Vite项目中vite.config.js中为什么只能使用process.env,无法使用import.meta.env?

关键要点 研究表明,Vite 配置文件(vite.config.js)运行在 Node.js 环境中,因此只能使用 process.env 访问环境变量,而 import.meta.env 专为客户端代码设计,在配置文件中不可用。于建议在 vite.config.js …

UE5.5 Niagara初始化粒子模块

粒子生成模块列表是每个创建的粒子都会调用一次对应的模块。此阶段中的模块设置每个粒子的初始值。粒子将从上到下的顺序执行模块。 下面,将列一下粒子生成常用的模块。 Initialize Particle 初始化粒子 所有粒子必需的基础模块,用于初始化粒子的基本属…

Ubuntu docker镜像恢复至原始文件

1.加载 Docker 镜像文件 首先&#xff0c;你需要将 .tar 格式的镜像文件加载回 Docker 中。 docker load -i <镜像文件路径> 加载完成后&#xff0c;你可以使用 docker images 命令查看所有可用的镜像&#xff0c;确认加载是否成功。 若出现 Got permission denied whil…

一个接口返回的preview和response的同一个字段的值不一样

&#x1f306; 内容速览 &#x1f315; 问题分析&#x1f315; 解决办法 &#x1f315; 问题分析 后端开发接口后与前端联调时发现&#xff0c;涉事次数页面展示值与实际不符全为0&#xff0c;排查发现查询接口的preview和response的involeNum的值不一样&#xff0c;其中previe…