git的文件操作本质上来讲是基于文件索引来做追踪的。
至于忽略未跟踪(untrack)文件文件,git提供了三种方式
1 .gitignore
2 git config --global core.excludesfile
3 git/info/exclude
网上有很多参考资料,可自行查阅。
不同语言项目大致需要忽略的文件,也已有大量现成模板。
至于如何忽略已跟踪(tracked)文件,使得当本地某系文件(尤其是配置文件发生改变时,不需要体现在git变化列表中)有以下两种方式:
1.git update-index --assume-unchanged /path/file 与git update-index --no-assume-unchanged /path/file
2.git update-index --skip-worktree /path/file 与git update-index --no-skip-worktree /path/file
此时再对/path/file进行更改,你会发现不会体现在git status列表中
有很多文章介绍采取git rm --cache的方式,不可取,这种方法本质上是将所有文件都删除了
解释:
--assume-unchanged 假定开发人员不会更改文件。此标记旨在为无变化文件夹(如 SDK)改善性能。
--skip-worktree 用于命 GIT 不再染指特定文件——即便开发人员可能更改它——的情形。例如,如果主源码库上游承载某些即将投入生产的配置文件而你不希望意外的提交影响到那些文件,--skip-worktree 正是你的菜。
所以我建议使用git update-index --skip-worktree来进行忽略
用以下命令可以查询被skip-worktree命令忽略的文件
git ls-files -v | grep -i ^S
极端情况:
某些已跟踪且被跳过的文件在master分支上发生了变化,与本地冲突导致无法进行pull操作。
建议解决步骤如下:
1.检查被跳过的文件
1 | git ls -files - v | grep -i ^S |
window下没有grep命令,执行
git ls-files -v
2.发现被跳过的文件在冲突列表中则取消跳过
git update-index --no-skip-worktree /path/file
3.使用stash暂存本地版本
git stash
4.拉取最新文件
git pull
5.自动解决
git stash pop
6.各种方式解决冲突
...
7.重新将该文件加入跳过列表
git update-index --assume-unchanged path/file
git 提供多种处理冲突的方法,自行搜索。
标签:
git
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)
2017-04-19 Unsupported major.minor version 51.0解决办法(转)
2016-04-19 存储过程中定义参数类型为数组