Git是跟踪项目中所有文件的好工具, 但是,您会希望在项目的整个生命周期中不要跟踪某些文件及其变更
。
Git中gitignore
概念:以.gitignore文件定义哪些文件将被Git排除跟踪
, 被.gitignore匹配到的文件将不会显示在Git的Untracked files
列表。
.gitignore文件控制Git仓库中应排除跟踪的文件(可由文件类型、路径、通配符等确立)。
Git将.gitignore应用于文件夹及其子文件夹,建议您将.gitignore放在存储库的根文件夹中,以免造成混淆。
实践中有时会在项目子目录
嵌套定义.gitignore文件
, 虽然不常见,但对于有特定规则的子目录,嵌套定义.gitignore文件有用。
只要你修改了.gitignore文件,Git立即开始忽略这些文件;如果你希望团队成员都忽略相同的文件,请提交这次git变更。 .gitignore中的每一行都排除一个文件或一组(与模式匹配的)文件, .gitignore语法很灵活:
# 忽略单个文件
mycode.class
# 忽略整个目录
/mydebugdir/
# 忽略文件类型
*.json
# 将前置规则取反,这个文件将被Git跟踪
!package.json
Windows使用者注意:.gitignore文件中的路径使用
正斜杠分隔符,而不是反斜杠
在开发阶段,有时候要临时忽略文件变更,特别是你拿到源代码需要针对本地环境做一些修改时有用
git update-index --skip-worktree <file>
恢复文件追踪
git update-index --no-skip-worktree <file>
如果文件已经被Git跟踪,再将这个文件添加到.gitignore文件并不会忽略文件变更。 你需要从Git Index中移除这个文件的信息:
git rm --cached <file>
以上步骤不会从系统中删除文件,只是告诉Git以后忽略该文件的变更
附1. 仅在个人系统中忽略文件
.gitignore文件被提交并推送之后,就会在团队共享。
若只想在你的系统上排除文件,请编辑仓库中的.git/info/exclude
文件: 修改这个文件不会共享给其他人,这个动作只对这个仓库有效
附2. 系统中跨仓库忽略文件
利用git config
工具建立全局.gitignore文件,
git config core.excludesfile C:\Users\frank\.gitignore_global
这个操作帮助你全局忽略
绝不会提交的文件类型,比如编译文件
通过本文你将学习到:
Git为我们提供一种机制,告诉我们不应在存储库中跟踪哪些文件, 这是一项强大的功能。丰富的语法以及层次结构,更好地控制哪些文件被忽略以及哪些文件未被忽略。