Git 停止追踪文件

平时在使用Git的时候,大多会有这种情况:因为在初始化git的时候没有考虑周全导致有些不需要的文件已经被被追踪,或者想不让在某次提交以后一些文件不被追踪(比如说一些涉及隐私的配置文件)。这里提供一些解决方案

Git中忽略某些文件

.gitignore

在一开始git进行初始化的时候我们可以通过修改配置文件.gitignore来指定哪些文件是不需要被追踪的。
文件 .gitignore 的格式规范如下:

  • 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配。(glob 模式是指 shell 所使用的简化了的正则表达式)
  • 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

快捷设置.gitignore

一般我们在项目中会有超多不需要放到git上面的东西,但是一个一个加入到.gitignore中是非常麻烦的。可以使用gitignore.io提供的API快速创建
设置别名:

1
git config --global alias.ignore '!gi() { curl -L -s https://www.gitignore.io/api/$@ ; }; gi'

这样以后创建项目的时候只需要结合你的开发环境通过关键进行快捷创建:

1
git ignore macOS >> .gitignore

忽略未追踪文件

在项目开发中可能会有一些新的不想追踪的文件生成,这个时候有两种处理方法:

  1. 更新.gitignore 文件,这种操作能够使得其他人也忽略对这些文件的追踪
  2. 将忽略的文件加到项目文件夹中的 .git/Info/exclude文件中,这种操作只对本地起作用。

停止追踪某些文件

如果文件已经被git追踪,不想在后面的开发中提交这些文件的修改,这里有两个方案:

  1. 删除文件以后再加到.gitignore 中,这种方案会使得原来那个可能有用的文件就丢失了。
  2. 使用git update-index --assume-unchanged [filename] 来忽略某些文件的修改, 这种修改只能再本地起作用,当别人使用这个项目的时候并不会起作用。
  3. 使用git rm --cached filename把文件从暂存里移除掉,之后的修改就不会追踪这些文件了。这种方案能够同步到远程,但是别人在拉取你的更新时也要消除对这些文件的追踪。