忽略已提交到Git仓库的文件
忽略已提交到Git仓库的文件
技术背景
在使用Git进行版本控制时,有时我们需要忽略已经提交到仓库的文件,例如配置文件、临时文件等。.gitignore
文件只能忽略尚未被纳入版本控制的文件,对于已经提交的文件,需要额外的操作来停止跟踪它们。
实现步骤
忽略单个文件
若要停止跟踪一个已添加到仓库的文件,但不将其从系统中删除,可使用以下命令:
1 |
|
忽略 .gitignore
中的所有文件
首先提交所有未完成的代码更改,然后执行以下命令:
1 |
|
此命令会将所有更改的文件从索引(暂存区)中移除。接着执行:
1 |
|
最后进行提交:
1 |
|
撤销 git rm --cached filename
若要撤销 git rm --cached filename
操作,可使用:
1 |
|
移除不匹配路径规范文件中列出路径的所有文件
使用以下命令移除不匹配路径规范文件(格式与 .gitignore
文件相同)中列出路径的所有文件:
1 |
|
注意,与 .gitignore
不同,.ignorelist
不能有换行符,因为 git
会认为空模式不是有效的路径规范项。
忽略已跟踪文件的更改
若要忽略仓库中已跟踪文件的更改(例如,开发环境的配置文件),可使用:
1 |
|
若要重新开始跟踪更改:
1 |
|
查看当前被 “忽略”(--assume-unchanged
)的文件
可设置一个便捷的别名来查看当前被 “忽略” 的文件:
1 |
|
移除特定文件的跟踪
若要移除特定文件的跟踪:
1 |
|
若要重新开始跟踪:
1 |
|
停止跟踪大量被忽略的文件
可结合以下命令停止跟踪大量被忽略的文件:
1 |
|
若要从文件系统中实际删除文件,可去掉 --cached
选项。也可以指定一个文件夹来限制搜索范围,例如:
1 |
|
核心代码
1 |
|
最佳实践
- 在执行
git add .
之前,确保已提交所有重要更改,否则可能会丢失其他文件的更改。 - 确保
.gitignore
文件中没有尾随空格,这可能会导致忽略规则失效。 - 将
.gitignore
文件放在仓库根目录,而不是.git
文件夹中。 - 注意
.gitignore
文件的编码和换行符格式,不同操作系统可能会有影响。
常见问题
git rm -r --cached .
误操作如何恢复:可使用git reset HEAD
恢复未提交的本地文件。.gitignore
规则不生效:检查文件编码、换行符格式和是否有尾随空格。- 路径规范文件
.ignorelist
报错:确保.ignorelist
中没有换行符。
忽略已提交到Git仓库的文件
https://119291.xyz/posts/2025-05-12.ignore-files-in-git-repository/