如何在 Git 中停止追踪并开始忽略文件
Git是一个有效的版本控制系统,但在某些情况下,最好将某些信息完全排除在我们的版本控制树之外。它们可能是临时文件、系统文件或一些不应该提交的机密数据。阅读本文以了解如何取消 Git 正在追踪的文件的追踪,以及如何避免 Git 在将来追踪新文件。此外,本文还解释了如何使用git ignore功能来清理工作并避免不必要的文件。
为什么要在 Git 中忽略文件?
在 Git 中忽略文件可以帮助:
- 防止敏感数据泄露:凭据或配置文件最适合不放入 Git 历史记录中。
- 减小存储库大小:以前的临时或生成的记录文件有时会使您的存储库过于庞大。
- 简化版本控制:将这些文件排除在外可以消除相对简单的存储库中的杂乱。
理解 .gitignore 文件
.gitignore文件是一个简单的文本文件,它将指示 Git 忽略哪些文件。您通常将此文件保存在项目存储库的根目录中。.gitignore中的每一行或多或少都是 Git 用于确定不应该追踪哪些文件或目录的正则表达式或字符串模式。
这是一个 .gitignore 文件可能的样子示例:
# Ignore Python compiled files*.pyc# Ignore node_modules foldernode_modules/# Ignore environment files.env
.gitignore 基本模式
- 星号 (*):匹配任何字符串。
- 问号 (?):匹配单个字符。
- 斜杠 (/):匹配目录。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
如何在 Git 中停止追踪文件
如果 git 正在追踪某个文件,而您希望忽略它,那么将其添加到.gitignore是不够的。Git 仍然会追踪该文件的更改。为了停止追踪它,您必须取消它的追踪。方法如下:
1. 将文件添加到 .gitignore:您可以打开.gitignore文件并指定文件名或文件的模式。# Add this file to be ignoredsensitive_data.txt
2. 从追踪中移除文件:使用命令 `git rm --cached` 取消追踪文件。此命令将文件从 Git 和工作树中移除,但不会从计算机的磁盘空间中移除。
git rm --cached sensitive_data.txt
3. 提交更改:取消追踪文件后,提交更改。
git commit -m "Stop tracking sensitive_data.txt"
4. 验证文件被忽略:现在,您应该通过键入 `git status` 来检查 git 是否忽略了该文件。如果成功,它不会在要追踪的文件列表中显示该文件。
专业提示:取消追踪已保存在 Git 中并已暂存的文件时务必小心,因为这些文件仍然存在于您的存储库中。如果需要,您可以使用 `git filter-branch` 或使用第三方工具 BFG Repo-Cleaner 从存储库历史记录中删除敏感数据。
如何在 Git 中忽略新文件
如果您不想让 Git 从一开始就追踪新文件,您只需将它们添加到.gitignore文件中。方法如下:
1. 打开或创建 .gitignore 文件:如果您的存储库不包含此重要文件,请确保将其添加到存储库的根目录。
2. 添加要忽略的文件或目录:您需要将文件名或模式输入到此.gitignore文件中。# Ignore all .log files*.log# Ignore database credentialsdb_credentials.json
3. 保存并提交 .gitignore 文件
git add .gitignoregit commit -m "Add .gitignore file to ignore log files and db_credentials.json"
常见错误
- 未提交 .gitignore:如果您未能创建.gitignore,其他团队成员将无法理解要排除哪些文件。
- 忽略已被追踪的文件:请记住,.gitignore仅适用于未追踪的文件。如果文件已被追踪,则必须使用`git rm --cached`。
- 使用不正确的模式:再次检查.gitignore文件的语法。例如,如果他们的计划是忽略所有扩展名为 .log 的文件,则只需编写 `*.log` 而不是 `.log`。
忽略 Git 文件的高级技巧
1. 全局 .gitignore:如果您想忽略计算机上每个 Git 存储库中的文件,请配置全局.gitignore文件。
git config --global core.excludesfile ~/.gitignore_global
2. 在本地环境中忽略追踪的文件:但有时您可能希望在本地忽略文件,而不会对团队的其他成员产生任何影响。为此,您可以使用.git/info/exclude,这类似于.gitignore,但仅适用于每台本地机器。
快速参考命令
以下是关键命令的摘要
命令 | 描述 |
`echo filename > .gitignore` | 将文件添加到 .gitignore |
`git rm --cached filename` | 停止追踪文件而不删除它 |
`git add .gitignore` | 暂存 .gitignore 更改 |
`git commit -m "message"` | 提交 .gitignore 更改 |
`git config --global core.excludesfile` | 设置全局 .gitignore |