当前位置: 首页 > article >正文

如何让 Git 停止跟踪文件?停止后又如何恢复跟踪?

在使用 Git 管理代码时,有时我们希望某些文件不再被 Git 跟踪(比如本地配置文件、临时文件等),但保留这些文件在本地;过了一段时间,可能又需要恢复跟踪这些文件。本文将用通俗易懂的语言,教你如何操作。


一、如何让 Git 停止跟踪某个文件?

假设你有一个文件 application.yml,已经被 Git 跟踪,现在想让它退出跟踪,但保留本地文件,步骤如下:

步骤 1:将文件加入 .gitignore(可选)

为了避免未来误提交,建议先在 .gitignore 文件中添加该文件:

# 打开或创建 .gitignore 文件(如果没有的话)
echo "application.yml" >> .gitignore
  • 作用:告诉 Git 永久忽略这个文件,即使后续修改也不会提示跟踪。
  • 注意:如果只是临时取消跟踪,可以跳过这一步。

步骤 2:从 Git 中移除跟踪(但保留本地文件)

git rm --cached application.yml
  • 作用:将文件从 Git 的跟踪列表中移除,但不删除本地文件
  • 警告:如果直接使用 git rm(不加 --cached),本地文件会被删除!

步骤 3:提交变更

git add .gitignore  # 如果修改了 .gitignore
git commit -m "停止跟踪 application.yml"
  • 结果:从此以后,Git 不再跟踪 application.yml 的变动,但文件仍保留在你的电脑中。

二、如何恢复跟踪某个文件?

如果之后又需要让 Git 重新跟踪这个文件(比如 application.yml 需要纳入版本控制了),步骤如下:

步骤 1:从 .gitignore 中移除规则(如果之前添加过)

打开 .gitignore 文件,删除或注释掉包含 application.yml 的行:

# 原本的忽略规则
# application.yml

步骤 2:强制重新添加文件

git add -f application.yml
  • 作用-f(即 --force)表示强制添加,即使文件在 .gitignore 中也能被跟踪。
  • 解释:如果 .gitignore 中已经没有该文件的规则,可以省略 -f

步骤 3:提交变更

git commit -m "重新跟踪 application.yml"
  • 结果:文件重新被 Git 跟踪,后续修改会被记录。

三、常见问题解答

Q1:为什么用 git rm --cached 而不是 git rm

  • git rm --cached:只从 Git 跟踪列表中移除文件,保留本地文件
  • git rm:不仅移除跟踪,还会删除本地文件!务必谨慎使用。

Q2:如果文件已经在 .gitignore 中,还能强制跟踪吗?

可以!使用 git add -f 文件名 强制添加,Git 会优先跟踪该文件,忽略 .gitignore 规则。

Q3:停止跟踪后,其他人更新代码会删除这个文件吗?

  • 如果你提交了 git rm --cached 操作并推送到远程仓库,其他人拉取代码后,他们的本地文件会被删除
  • 解决方案:如果文件需要保留在本地但不想被 Git 跟踪,确保所有协作者本地都有备份,或提前沟通!

四、总结命令表

目的关键命令备注
停止跟踪文件git rm --cached 文件名保留本地文件,提交生效
永久忽略文件将文件加入 .gitignore避免未来误跟踪
恢复跟踪文件git add -f 文件名强制重新跟踪
提交变更git commit -m "说明"所有操作需提交后才生效

http://www.lryc.cn/news/2396906.html

相关文章:

  • 【第16届蓝桥杯 | 软件赛】CB组省赛第二场
  • SQL进阶之旅 Day 10:执行计划解读与优化
  • AR/MR实时光照阴影开发教程
  • Visual studio 中.sln/.vcxproj/.vcxproj.filters和.vcxproj.user文件的作用
  • 【汽车电子入门】一文了解LIN总线
  • JVM学习(七)--JVM性能监控
  • 关于 java:5. Java IO 与文件操作
  • 【笔记】为 Python 项目安装图像处理与科学计算依赖(MINGW64 环境)
  • 【笔记】MLA矩阵吸收分析
  • 600+纯CSS加载动画一键获取指南
  • 开源的JT1078转GB28181服务器
  • 智能守护电网安全:探秘输电线路测温装置的科技力量
  • Java垃圾回收算法及GC触发条件
  • 【Hot 100】118. 杨辉三角
  • useMemo useCallback 自定义hook
  • ffmpeg 的视频格式转换 c# win10
  • 【irregular swap】An Examination of Fairness of AI Models for Deepfake Detection
  • 【JAVA】注解+元注解+自定义注解(万字详解)
  • 【Doris基础】Apache Doris中的Version概念解析:深入理解数据版本管理机制
  • 【Linux 基础知识系列】第一篇-Linux 简介与历史
  • 【图像处理基石】如何进行图像畸变校正?
  • 软件开发项目管理工具选型及禅道开源版安装
  • 【架构艺术】平衡技术架构设计和预期的产品形态
  • 电力系统时间同步系统
  • Vue使用toFixed保留两位小数的三种写法
  • 华为云【Astro zero】如何做“设备编辑”页面
  • Arch安装botw-save-state
  • 电脑为什么换个ip就上不了网了
  • NULL与空字符串的区别:数据库专家详解
  • github 2FA双重认证丢失解决